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 31 Javascript
javascript 基础篇2 数据类型,语句,函数
Mar 14 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
jQuery实现鼠标经过事件的延时处理效果
Aug 20 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 Javascript
vue中如何让子组件修改父组件数据
Jun 14 Javascript
javascript中的闭包概念与用法实践分析
Jul 26 Javascript
微信小程序实现页面浮动导航
Jan 08 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 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
如何去掉文章里的 html 语法
2006/10/09 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
js清空form表单中的内容示例
2014/05/20 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python 显示数组全部元素的方法
2018/04/19 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
python实现邮件发送功能
2019/08/10 Python
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
阳光体育活动总结
2014/04/30 职场文书
社区反邪教工作方案
2014/06/16 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
跳高加油稿
2015/07/21 职场文书