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 相关文章推荐
jq选项卡鼠标延迟的插件实例
May 13 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
Aug 02 Javascript
apply和call方法定义及apply和call方法的区别
Nov 15 Javascript
AngularJS入门教程之多视图切换用法示例
Nov 02 Javascript
js实现倒计时效果(小于10补零)
Mar 08 Javascript
JS使用正则表达式验证身份证号码
Jun 23 Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
vue+SSM实现验证码功能
Dec 07 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
JavaScript Array对象基本方法详解
Sep 03 Javascript
jquery实现吸顶导航效果
Jan 08 jQuery
详解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版)
2006/10/09 PHP
php基础知识:函数基础知识
2006/12/13 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
Python hashlib模块用法实例分析
2018/06/12 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
积极分子思想汇报
2014/01/04 职场文书
物业招聘计划书
2014/01/10 职场文书
50岁生日感言
2014/01/23 职场文书
考试作弊检讨书
2015/01/27 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers