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高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 Javascript
java、javascript实现附件下载示例
Aug 14 Javascript
Eclipse引入jquery报错如何解决
Dec 01 Javascript
快速使用Bootstrap搭建传送带
May 06 Javascript
jQuery模拟select实现下拉菜单功能
Jun 20 Javascript
第一次接触神奇的Bootstrap网格系统
Jul 27 Javascript
js自调用匿名函数的三种写法(推荐)
Aug 19 Javascript
JavaScript 函数模式详解及示例
Sep 07 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
vue使用微信JS-SDK实现分享功能
Aug 23 Javascript
vue实现弹幕功能
Oct 25 Javascript
微信小程序picker组件两列关联使用方式
Oct 27 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
杏林同学录(三)
2006/10/09 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python栈类实例分析
2015/06/15 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
基于python的Paxos算法实现
2019/07/03 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
python使用建议与技巧分享(二)
2020/08/17 Python
致铅球运动员广播稿精选
2014/01/12 职场文书
数学系个人求职信范文
2014/01/30 职场文书
基督教婚礼主持词
2014/03/14 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
详解Python常用的魔法方法
2021/06/03 Python
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python