javascript数据结构之串的概念与用法分析


Posted in Javascript onApril 12, 2017

本文实例讲述了javascript数据结构之串的概念与用法。分享给大家供大家参考,具体如下:

串是由零个或多个字符组成的有限序列。串中字符的个数称为串的长度

串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常称字符在序列中的序号为该字符在串中的位置。子串的首字符在主串中首次出现的位置定义为子串在主串中的位置。

串的逻辑结构和线性表十分相似,区别仅仅在于串的数据对象约束为字符集。然而两者的基本操作有很大差别。线性表中,基本以单个元素来进行操作;而串中多半以串的整体也就是子串来作为操作对象

JavaScript有很多串的方法吗,具体的请查阅api。
https://developer.mozilla.org/en-US/

这里我们挑一个来看看,比如indexOf,该方法返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。我们来模拟一下这个方法的实现:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<script type="text/javascript">
  function index(a,b,pos){
    //a为主串,b为要寻找的子串,pos为开始寻找的位置
    if(pos>0){
      var a_len=a.length,
        b_len=b.length,
        i=pos;
      while(i<=a_len-b_len+1){
    //从第i个位置取和子串长度相等的进行比较,如果没有找到则继续i+1
        var c=a.substr(i,b_len);
        if(c==b)
        return i;
        i++;
      }
    }
    return false;
  }
  var a="abcdefg";
  var b="def";
  var c=index(a,b,1);
  alert(c);//3
  alert(a.indexOf(b,1));//3
</script>
  </body>
</html>

这个思想其实很简单,就是在主串中取从第i个字符起,长度和要寻找的串相等的子串进行比较,直到找到为止。所以说我们在运用一些原生的api时,如果能够知道其实现的原理,就可以更好的驾驭它们。当然,该方法还可以改进,我在以后的文章中会介绍的。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
常用简易JavaScript函数
Apr 09 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
Dec 14 Javascript
jquery中选择块并改变属性值的方法
Jul 31 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
Jun 20 Javascript
JS动态给对象添加事件的简单方法
Jul 19 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
Feb 27 Javascript
vue-cli的eslint相关用法
Sep 29 Javascript
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
ES6 更易于继承的类语法的使用
Feb 11 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
Sep 10 Javascript
ES11新增的这9个新特性,你都掌握了吗
Oct 15 Javascript
jQuery插件实现图片轮播效果
Oct 19 jQuery
详解RequireJS按需加载样式文件
Apr 12 #Javascript
JS表格组件神器bootstrap table使用指南详解
Apr 12 #Javascript
详谈jQuery.load()和Jsp的include的区别
Apr 12 #jQuery
微信小程序开发之选项卡(窗口底部TabBar)页面切换
Apr 12 #Javascript
JavaScript模块化之使用requireJS按需加载
Apr 12 #Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 #jQuery
微信小程序 仿美团分类菜单 swiper分类菜单
Apr 12 #Javascript
You might like
php处理json时中文问题的解决方法
2011/04/12 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
初始Nodejs
2014/11/08 NodeJs
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Python中一般处理中文的几种方法
2019/03/06 Python
python实现数据分析与建模
2019/07/11 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
关于python 跨域处理方式详解
2020/03/28 Python
python中return如何写
2020/06/18 Python
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
为什么会有内存对齐
2016/10/10 面试题
给实习单位的感谢信
2014/02/01 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
2014年超市工作总结
2014/11/19 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python