JavaScript数组的栈方法与队列方法详解


Posted in Javascript onMay 26, 2016

数组(Array)和对象(Object)应该是JavaScript中使用最多也是最频繁的两种类型了,Array提供了很多常用的方法:栈方法、队列方法、重排序方法、操作方法、位置方法、迭代方法等等。

1、Array的栈方法

栈是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。栈中项的插入(push)和移除,只发生在一个位置——栈的顶部。ECMAScript为数组提供了push()和pop()方法,可以实现类似栈的行为。下面两图分别演示了入栈与出栈操作。 JavaScript数组的栈方法与队列方法详解JavaScript数组的栈方法与队列方法详解

push()方法可以接收任意数据的参数,把它们逐个添加到数组末尾,并返回修改后的数组长度。pop()方法从数组末尾移除最后一项,减少数组的length值

var students = [];
students.push("bluce","jordan","marlon","kobe");//入栈4项
alert(students.length);   //4
alert(students[0]);     //"bluce",第一项在栈的底部
alert(students[1]);     //"jordan"
students.push("paul");
alert(students.length);   //5
var item = students.pop(); //"paul"
alert(students.length);   //4

2、Array的队列方法

栈数据结构的访问规则是LIFO(后进先出),而队列数据结构的访问规则是FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,从列表的前端移除项。push()方法是向数组末端添加项的方法,因此要模拟队列只需一个从数组前端取得项的方法——shift(),其能够移除数组中的第一个项并返回该项,同时数组的length-1。结合使用shift()和push()方法,可以像使用队列一样使用数组。

JavaScript数组的栈方法与队列方法详解
JavaScript数组的栈方法与队列方法详解

var students = [];
students.push("bluce","jordan","marlon","kobe");//入队4项
//students=["bluce","jordan","marlon","kobe"];
alert(students.length);   //4
alert(students[0]);     //"bluce",第一项在栈的底部
alert(students[1]);     //"jordan"
students.push("paul");
alert(students.length);   //5
//students=["bluce","jordan","marlon","kobe","paul"];
var item = students.shift();  //"bluce"
alert(students.length);   //4
//students=["jordan","marlon","kobe","paul"];

此外,ECMAScript还提供了unshift()方法,它能在数组前端添加任意个项并返回新数组的长度。因此,结合使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项

Javascript 相关文章推荐
Javascript实现页面跳转的几种方式分享
Oct 26 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
10个很棒的jQuery代码片段
Sep 24 Javascript
基于Javascript实现弹出页面效果
Jan 01 Javascript
JS深度拷贝Object Array实例分析
Mar 31 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
js中的面向对象入门
Mar 06 Javascript
基于JS递归函数细化认识及实用实例(推荐)
Aug 07 Javascript
详解微信小程序中组件通讯
Oct 30 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
详解JavaScript中this关键字的用法
May 26 #Javascript
ashx文件获取$.ajax()方法发送的数据
May 26 #Javascript
js操作数据库实现注册和登陆的简单实例
May 26 #Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 #Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 #Javascript
JS表格组件神器bootstrap table详解(强化版)
May 26 #Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
May 26 #Javascript
You might like
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
Javascript UrlDecode函数代码
2010/01/09 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
nodejs读取并去重excel文件
2018/04/22 NodeJs
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
Python线程创建和终止实例代码
2018/01/20 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
python pycharm的安装及其使用
2019/10/11 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
python 高阶函数简单介绍
2021/02/19 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
个人函授自我鉴定
2014/03/25 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
辞职信怎么写
2015/02/27 职场文书
公司酒会致辞
2015/07/30 职场文书
医院感染管理制度
2015/08/05 职场文书
运动会100米广播稿
2015/08/19 职场文书
周一给客户的问候语
2015/11/10 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
Go 语言中 20 个占位符的整理
2021/10/16 Golang