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 测试及效验工具
Apr 18 Javascript
多种方法判断Javascript对象是否存在
Sep 22 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
JavaScript中的fontsize()方法使用详解
Jun 08 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
Feb 25 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
javascript实现页面滚屏效果
Jan 17 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 Javascript
详解vue中$nextTick和$forceUpdate的用法
Dec 11 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 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猜单词游戏
2015/09/29 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
Puppeteer使用示例详解
2019/06/20 Python
python super函数使用方法详解
2020/02/14 Python
Python新手学习raise用法
2020/06/03 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
正科级干部考察材料
2014/05/29 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
大二学年个人总结
2015/03/03 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
golang slice元素去重操作
2021/04/30 Golang