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 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
JavaScript学习笔记(十七)js 优化
Feb 04 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
JS获取当前网页大小以及屏幕分辨率等
Sep 05 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
Aug 25 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
windows下vue-cli及webpack搭建安装环境
Apr 25 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
Jan 12 Javascript
JS实现二维数组横纵列转置的方法
Apr 17 Javascript
简单谈谈javascript高级特性
Sep 04 Javascript
JS中比较两个Object数组是否相等方法实例
Nov 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
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
PHP如何将XML转成数组
2016/04/04 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
php之可变函数的实例详解
2017/09/13 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
了解重排与重绘
2019/05/29 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
python实现用户管理系统
2018/01/10 Python
python 堆和优先队列的使用详解
2019/03/05 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
幼儿园实习生辞职信
2014/01/20 职场文书
小区停车场管理制度
2014/01/27 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js