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 相关文章推荐
模拟select的代码
Oct 19 Javascript
调试Node.JS的辅助工具(NodeWatcher)
Jan 04 Javascript
js读写json文件实例代码
Oct 21 Javascript
javascript实现完美拖拽效果
May 06 Javascript
简介AngularJS中使用factory和service的方法
Jun 17 Javascript
基于jQuery实现表格的查看修改删除
Aug 01 Javascript
深入探讨Vue.js组件和组件通信
Sep 12 Javascript
JavaScript中const、var和let区别浅析
Oct 11 Javascript
jQ处理xml文件和xml字符串的方法(详解)
Nov 22 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
JavaScript仿微博输入框效果(案例分析)
Dec 06 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 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显示MySQL数据的三种方法
2008/06/05 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
Python中集合类型(set)学习小结
2015/01/28 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
python 系统调用的实例详解
2017/07/11 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
进修护士自我鉴定
2013/10/14 职场文书
管理科学大学生求职信
2013/11/13 职场文书
《匆匆》教学反思
2014/02/22 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
公司活动总结范文
2014/07/01 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS