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 相关文章推荐
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
Apr 25 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
Apr 02 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
Mar 06 Javascript
JS修改地址栏参数实例代码
Jun 14 Javascript
Javascript中字符串和数字的操作方法整理
Jan 22 Javascript
Node.js assert断言原理与用法分析
Jan 04 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
js通过canvas生成图片缩略图
Oct 02 Javascript
Vue 组件注册全解析
Dec 17 Vue.js
JavaScript实现通讯录功能
Dec 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
什么是短波收听SWL
2021/03/01 无线电
收集的php编写大型网站问题集
2007/03/06 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
教你学会使用Python正则表达式
2017/09/07 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
Python3分析处理声音数据的例子
2019/08/27 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
学校岗位设置方案
2014/01/16 职场文书
超市总经理岗位职责
2014/02/02 职场文书
环保小标语
2014/06/13 职场文书
毕业大学生自荐信
2014/06/17 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
民主生活会主持词
2015/07/01 职场文书
学生会部长竞选稿
2015/11/19 职场文书