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函数的使用说明
Oct 11 Javascript
基于jquery的地址栏射击游戏代码
Mar 10 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
Aug 25 Javascript
使用jquery自定义鼠标样式满足个性需求
Nov 05 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
Aug 07 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
Sep 20 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
Nov 14 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
Mar 07 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
Aug 31 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作的文本留言本的例子(五)
2006/10/09 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
python中列表和元组的区别
2017/12/18 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
对python字典过滤条件的实例详解
2019/01/22 Python
Python list与NumPy array 区分详解
2019/11/06 Python
openCV提取图像中的矩形区域
2020/07/21 Python
python能做哪些生活有趣的事情
2020/09/09 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
邮政员工辞职信
2014/01/16 职场文书
员工工作表现评语
2014/04/26 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
指导老师鉴定意见
2015/06/05 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js