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解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
实现placeholder效果的方案汇总
Jun 11 Javascript
详解node中创建服务进程
May 09 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
pm2 部署 node的三种方法示例
Oct 20 Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 Javascript
JavaScript调用模式与this关键字绑定的关系
Apr 21 Javascript
微信小程序日历效果
Dec 29 Javascript
通过layer实现可输入的模态框的例子
Sep 27 Javascript
vue 实现路由跳转时更改页面title
Nov 05 Javascript
vue内置组件keep-alive事件动态缓存实例
Oct 30 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
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
Bootstrap 布局组件(全)
2016/07/18 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
python使用Flask操作mysql实现登录功能
2018/05/14 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
导游的职业规划书范文
2013/12/27 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
食品销售计划书
2014/04/26 职场文书
低碳环保口号
2014/06/12 职场文书
环境卫生倡议书
2014/08/29 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
无婚姻登记记录证明
2015/06/18 职场文书