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 05 Javascript
匹配任意字符的正则表达式写法
Apr 29 Javascript
javascript中关于break,continue的特殊用法与介绍
May 24 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
js判断字符是否是汉字的两种方法小结
Jan 03 Javascript
输入框过滤非数字的js代码
Sep 18 Javascript
jQuery实现复制到粘贴板功能
Feb 11 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
Feb 14 Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 Javascript
Openlayers实现扩散的动态点(水纹效果)
Aug 17 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
PHP多进程编程实例
2014/10/15 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
整理Python中的赋值运算符
2015/05/13 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
django的csrf实现过程详解
2019/07/26 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
实习期自我鉴定
2013/10/11 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
复兴之路观后感
2015/06/02 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Redis唯一ID生成器的实现
2022/07/07 Redis