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 相关文章推荐
Jquery 设置标题的自动翻转
Oct 03 Javascript
关于query Javascript CSS Selector engine
Apr 12 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
Feb 18 Javascript
浅谈React组件之性能优化
Mar 02 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
vue项目中常见问题及解决方案(推荐)
Oct 21 Javascript
vue(2.x,3.0)配置跨域代理
Nov 27 Javascript
详解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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
学习ExtJS Column布局
2009/10/08 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
offsetParent 算法分析
2010/04/05 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
华为C++笔试题
2014/08/05 面试题
总经理助理工作职责
2014/02/06 职场文书
大学生就业意向书范文
2014/04/01 职场文书
金融管理专业求职信
2014/07/10 职场文书
建筑安全生产责任书
2014/07/22 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书