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通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
js创建一个input数组并绑定click事件的方法
Jun 12 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
Jun 21 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
ES6新特性:使用export和import实现模块化详解
Jul 31 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
详解js的视频和音频采集
Aug 09 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
Sep 21 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 Javascript
vue实现点击出现操作弹出框的示例
Nov 05 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 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实现简单爬虫的方法
2015/07/29 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
开启PHP的伪静态模式
2015/12/31 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
使用Python实现音频双通道分离
2020/12/25 Python
大专会计自我鉴定
2014/02/06 职场文书
协议书怎么写
2014/04/21 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
个人委托书范本汇总
2014/10/01 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
防溺水主题班会教案
2015/08/12 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers