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的eval()中使用函数的进一步讨论
Jul 26 Javascript
JavaScript iframe的相互操作浅析
Oct 14 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
两种常用的javascript数组去重方法思路及代码
Mar 26 Javascript
浅谈JavaScript之事件绑定
Jul 08 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
Vue头像处理方案小结
Jul 26 Javascript
javascript实现简单打字游戏
Oct 29 Javascript
js实现上传按钮并显示缩略图小轮子
May 04 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格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
JS实现self的resend
2010/07/22 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
python处理csv数据的方法
2015/03/11 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
python 伯努利分布详解
2020/02/25 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
为什么说python适合写爬虫
2020/06/11 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
小学生自我评价范例
2013/09/24 职场文书
技校生自我鉴定
2013/12/08 职场文书
《散步》教学反思
2014/03/02 职场文书
答谢会策划方案
2014/05/12 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Python爬虫实战之爬取携程评论
2021/06/02 Python