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 相关文章推荐
Extjs 几个方法的讨论
Jan 28 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
JS声明变量背后的编译原理剖析
Dec 28 Javascript
Javascript之this关键字深入解析
Nov 12 Javascript
再谈Javascript中的异步以及如何异步
Aug 19 Javascript
原生js实现旋转木马轮播图效果
Feb 27 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
详解angular 中的自定义指令之详解API
Jun 20 Javascript
Vue.js2.0中的变化小结
Oct 24 Javascript
vue实现路由懒加载的3种方法示例
Sep 01 Javascript
Vue $attrs & inheritAttr实现button禁用效果案例
Dec 07 Vue.js
详解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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
jquery ajax abort()的使用方法
2010/10/28 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
基于AngularJS实现表单验证功能
2017/07/28 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python实现购物车程序
2018/04/16 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
什么是规则表达式
2012/05/03 面试题
征兵宣传标语
2014/06/20 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
国庆节慰问信
2015/02/15 职场文书
大学生村官入党自传
2015/06/26 职场文书
活动简报范文
2015/07/22 职场文书
商业计划书范文
2019/04/24 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
Python获取字典中某个key的value
2022/04/13 Python