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 28 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
jQuery手机拨号界面特效代码分享
Aug 27 Javascript
VUE实现日历组件功能
Mar 13 Javascript
ES6学习笔记之Set和Map数据结构详解
Apr 07 Javascript
详解vuejs之v-for列表渲染
Jun 22 Javascript
微信小程序多列选择器range-key使用详解
Mar 30 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 19 Javascript
绘制微信小程序验证码功能的实例代码
Jan 05 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
php判断linux下程序问题实例
2015/07/09 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
简析Python的闭包和装饰器
2016/02/26 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
冲出亚马逊观后感
2015/06/03 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
python之基数排序的实现
2021/07/26 Python