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 相关文章推荐
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
Apr 23 Javascript
JS两种定义方式的区别、内部原理
Nov 21 Javascript
jQuery聚合函数实例
May 21 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
jquery实现多次上传同一张图片
Jan 09 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
深入浅析JSONAPI在PHP中的应用
Dec 24 Javascript
JS监听事件的叠加和移除功能
Nov 19 Javascript
JavaScript代理模式原理与用法实例详解
Mar 10 Javascript
Vue Render函数创建DOM节点代码实例
Jul 08 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 写文本日志实现代码
2010/05/18 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
Angular的MVC和作用域
2016/12/26 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
在Python中使用正则表达式的方法
2015/08/13 Python
python线程、进程和协程详解
2016/07/19 Python
Python类的继承用法示例
2019/01/31 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
解决python对齐错误的方法
2020/07/16 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
自荐书封面下载
2013/11/29 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
法务专员岗位职责
2015/02/14 职场文书
小组口号霸气押韵
2015/12/24 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python
Hive HQL支持2种查询语句风格
2022/06/25 数据库
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python