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的仿flash的广告轮播代码
Nov 04 Javascript
js截取固定长度的中英文字符的简单实例
Nov 22 Javascript
angularjs中的单元测试实例
Dec 06 Javascript
实例讲解JQuery中this和$(this)区别
Dec 08 Javascript
jQuery中的pushStack实现原理和应用实例
Feb 03 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
浅析JavaScript Array和string的转换(推荐)
May 20 Javascript
jQuery实现复选框的全选和反选
Feb 02 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 Javascript
原生JS京东轮播图代码
Mar 22 Javascript
vue实现微信获取用户信息的方法
Mar 21 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
常用js字符串判断方法整理
2013/10/18 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
Vue 的 v-model用法实例
2020/11/23 Vue.js
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
使用python开发vim插件及心得分享
2014/11/04 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
django中的setting最佳配置小结
2017/11/21 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
基于python3实现倒叙字符串
2020/02/18 Python
python编写俄罗斯方块
2020/03/13 Python
Django缓存Cache使用详解
2020/11/30 Python
flask框架中的cookie和session使用
2021/01/31 Python
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
自动化专业个人求职信范文
2013/11/29 职场文书
入党积极分子介绍信
2014/01/17 职场文书
放飞理想主题班会
2015/08/14 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
详解Python中的for循环
2022/04/30 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL