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定时机制
Oct 29 Javascript
javascript中数组array及string的方法总结
Nov 28 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
Mar 09 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
vue-cli+webpack项目 修改项目名称的方法
Feb 28 Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 Javascript
微信小程序实现日历效果
Dec 28 Javascript
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 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
基于mysql的论坛(5)
2006/10/09 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
瑜伽国际:Yoga International
2018/04/18 全球购物
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
工艺工程师工作职责
2013/11/23 职场文书
医学专业五年以上个人求职信
2013/12/03 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
Golang 字符串的常见操作
2022/04/19 Golang
Go web入门Go pongo2模板引擎
2022/05/20 Golang