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一点特殊用法
May 28 Javascript
非主流的textarea自增长实现js代码
Dec 20 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
javascript实现验证身份证号的有效性并提示
Apr 30 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
May 21 Javascript
ES5学习教程之Array对象
Apr 01 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 Javascript
vue2 中二级路由高亮问题及配置方法
Jun 10 Javascript
Vue触发input选取文件点击事件操作
Aug 07 Javascript
react中hook介绍以及使用教程
Dec 11 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
域名和cookie问题(域名后缀)
2012/10/10 PHP
对之前写的jquery分页做下升级
2014/06/19 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
轮播图组件js代码
2016/08/08 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
web打印小结
2017/01/11 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
react路由配置方式详解
2017/08/07 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
用python实现百度翻译的示例代码
2018/03/09 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
《与朱元思书》的教学反思
2014/04/17 职场文书
交通违章检讨书
2014/09/21 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang