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 数值型和字符串型之间的转换
Jul 25 Javascript
JavaScript 选中文字并响应获取的实现代码
Aug 28 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
Feb 07 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
Nov 02 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
Jan 22 Javascript
鼠标经过出现气泡框的简单实例
Mar 17 Javascript
vue动态生成dom并且自动绑定事件
Apr 19 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
转换layUI的数据表格中的日期格式方法
Sep 19 Javascript
JavaScript运动原理基础知识详解
Apr 02 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
SMARTY学习手记
2007/01/04 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
javascript preload&lazy load
2010/05/13 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
python绘制圆柱体的方法
2018/07/02 Python
python3.6的venv模块使用详解
2018/08/01 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
财务助理岗位职责
2013/11/10 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
淘宝好评语句大全
2014/12/31 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python