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 相关文章推荐
jquery获得下拉框值的代码
Aug 13 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
Apr 14 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
Sep 01 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 Javascript
js图片切换具体实现代码
Oct 13 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
快速了解Node中的Stream流是什么
Feb 13 Javascript
JS实现电脑虚拟键盘打字测试
Jun 24 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
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
浅谈php中include文件变量作用域
2015/06/18 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
小程序实现录音功能
2020/09/22 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
简单理解Python中的装饰器
2015/07/31 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
Python用户自定义异常的实现
2020/12/25 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
大学生学习党课思想汇报
2014/01/03 职场文书
高中地理教学反思
2014/01/29 职场文书
财务会计毕业生个人求职信
2014/02/03 职场文书
元旦联欢会感言
2014/03/04 职场文书
解除合同协议书
2014/04/17 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript