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 美元符冲突的解决方法
Mar 28 Javascript
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
深入探密Javascript数组方法
Jan 08 Javascript
Redis基本知识、安装、部署、配置笔记
Mar 05 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
Nov 29 Javascript
javascript实现二叉树遍历的代码
Jun 08 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
vue 实现小程序或商品秒杀倒计时
Apr 14 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
node.js express框架简介与实现
Jul 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 URL编码解码函数代码
2009/03/10 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
10个php函数实用却不常见
2015/10/13 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
jQuery拖拽 & 弹出层 介绍与示例
2013/12/27 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
JS实现身份证输入框的输入效果
2017/08/21 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python3 logging日志封装实例
2020/04/08 Python
Python 爬虫性能相关总结
2020/08/03 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
房地产出纳岗位职责
2013/12/01 职场文书
陈欧广告词
2014/03/14 职场文书
男女朋友协议书
2014/04/23 职场文书
捐款活动总结
2014/08/27 职场文书
入党转正申请报告
2015/05/15 职场文书
使用Redis实现分布式锁的方法
2022/06/16 Redis