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 相关文章推荐
js中将字符串转换成json的三种方式
Jan 12 Javascript
myeclipse安装jQuery插件的方法
Mar 29 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
Jul 31 Javascript
js获取元素外链样式的方法
Jan 27 Javascript
JavaScript获取function所有参数名的方法
Oct 30 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
Vue计算属性的学习笔记
Mar 22 Javascript
bootstrap的工具提示实例代码
May 17 Javascript
js指定步长实现单方向匀速运动
Jul 17 Javascript
gulp构建小程序的方法步骤
May 31 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
vue选项卡切换的实现案例
Apr 11 Vue.js
详解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中读取和写入WORD文档的代码
2008/04/09 PHP
也谈php网站在线人数统计
2008/04/09 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
深入浅出php socket编程
2015/05/13 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
物业保安员岗位职责
2014/03/14 职场文书
民主生活会汇报材料
2014/12/15 职场文书
谢师宴学生致辞
2015/07/27 职场文书
礼貌问候语大全
2015/11/10 职场文书