JavaScript的数组是一个拥有堆栈和队列自身优点的global对象。也就是说JavaScript数组可以表现的像栈(LIFO)和队列(FIFO)一样操作。这也是JavaScript数组强大的可操作性的体现。

堆栈和队列

栈和队列都是动态的集合,在栈中,可以去掉的元素是最近插入的那一个。栈实现了后进先出。在队列中,可以去掉的元素总是在集合中存在的时间最长的那一个。队列实现了先进先出的策略。

堆栈的基本概念

先上张图:

ECMAScript为数组专门提供了 shift() 和 unshift() 方法,以便实现类似队列的行为。由于 push() 是向数组末端添加数组项的方法,因此要模拟队列只需一个从数组前端取得数组项的方法。实现这一操作的数组方法就是 shift() ,它能够移除数组中的第一个项并返回该项,同时将数组长度减1

顾名思义, unshift() 与 shift() 的用途相反:它能在数组前端添加任意个数组项并返回新数组的长度。因此,同时使用 unshift() 和 pop() 方法,可以从相反的方向来模拟队列,即在数组的前端添加数组项,从数组末端移除数组项。

简单得回忆一下:

  • push()方法可以在数组的末属添加一个或多个元素
  • shift()方法把数组中的第一个元素删除
  • unshift()方法可以在数组的前端添加一个或多个元素
  • pop()方法把数组中的最后一个元素删除

实现类似栈的行为

push()pop()结合在一起,我们就可以实现类似栈的行为:

在Chrome浏览器控制台输出的效果如下图所示:

实现类似队列的行为

shift()push()方法结合在一起,可以像使用队列一样使用数组。即在数组的后端添加项,从数组的前端移除项:

在Chrome浏览器控制台输出的效果如下图所示:

除此之外,还可以同时使用unshift()pop()方法,从相反的方向来模拟队列,即在数组的前端添加项,从数组的后端移除项。如下面的示例所示:

在Chrome浏览器控制台输出的效果如下图所示:

数组的push()、pop()、shift()和unshift()方法相关推荐

  1. js数组操作(push,pop,shift,unshift,slice,splice,concat,sort)

    js中针对数组操作的方法还是比较多的,今天突然想到来总结一下,也算是温故而知新吧.不过不会针对每个方法进行讲解,我只是选择其中的一些来讲. 首先来讲一下push和pop方法,这两个方法只会对数组从尾部 ...

  2. java 数组 push pop_JavaScript学习笔记:数组的push()、pop()、shift()和unshift()方法

    JavaScript是一种弱类型语言,不像其它程序语言需要严格定义数据类型.在JavaScript中数组可以任意修改变动,这样也就出现了一个问题,如果边遍历数组边操作数组(比如删除当前项,则所有之后的 ...

  3. JS数组的push()、pop()、shift()和unshift()方法

    JS数组的push().pop().shift()和unshift()方法 堆栈和队列 栈和队列都是动态的集合,在栈中,可以去掉的元素是最近插入的那一个.栈实现了后进先出.在队列中,可以去掉的元素总是 ...

  4. 详解数组的push()、pop()、shift()和unshift()方法

    数组的push.pop.shift和unshift方法 堆栈和队列 堆栈 实现类似栈的行为 队列 实现类似队列的行为 JavaScript的数组是一个拥有堆栈和队列自身优点的global对象.也就是说 ...

  5. vue2实现数组push/pop/shift/unshift方法重写

    // 获取数组原型 const orginalPrototype = Array.prototype// 备份用来重新操作 const arrPrototype = Object.create(org ...

  6. push计算机语言,数组的操作push,pop,shift,unshift详解

    JS中的数组提供了四个操作,以便让我们实现队列与堆栈! 小理论: 队列:先进先出 堆栈:后进先出 实现队列的方法: shift:从集合中把第一个元素删除,并返回这个元素的值. unshift: 在集合 ...

  7. js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip

    js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会 ...

  8. arr的push,pop,slice.....各种使用方法详细介绍

    arr的push,pop,slice-各种使用方法 arr.push(); 向数组的末尾追加元素 会修改原数组 返回值:修改后的length值 可以追加多个 arr[1,2,3]; arr1[4,5, ...

  9. java数组如何pop_Js数组的操作push,pop,shift,unshift等方法详细介绍

    js中针对数组操作的方法还是比较多的,今天突然想到来总结一下,也算是温故而知新吧.不过不会针对每个方法进行讲解,我只是选择其中的一些来讲. 首先来讲一下push和pop方法,这两个方法只会对数组从尾部 ...

最新文章

  1. 【算法】学习笔记(0):算法初探(逻辑抽象 + 示例 + 代码实现)
  2. 【随笔】写在2014年的第一天
  3. location的hash部分和使用window.onhashchange实现ajax请求内容时使用浏览器后退和前进功能...
  4. C#综合揭秘——深入分析委托与事件(上)
  5. baidu 地图 鼠标移上显示标签 鼠标离开隐藏标签
  6. 【公众号系列】站在烦恼里仰望幸福
  7. ­«持续更新«计算机名词梳理(知识点概括,名词解析,简答题)
  8. JTXQ、JTT部标模拟终端使用说明 --2 JTT808协议菜单
  9. 万达商管再次递表港交所:上半年净利润40亿元,外部股东阵容强大
  10. html打砖块游戏制作,JavaScript实现打砖块游戏
  11. C#编程:常用数学函数
  12. python slice函数画高维图_没想到Python还能画六维图
  13. OSChina 周四乱弹 —— 下班等通知,我张北华同意后才下班
  14. 多域名SSL证书是什么意思?
  15. 安全测试三部曲之APPScan介绍
  16. 基于51单片机SJA1000 CAN通讯实现(C语言程序)
  17. Linux 系统下 CodeBlocks安装与使用
  18. 项目四 个人所得税计算器 switch语句
  19. AjaxPro的应用
  20. 第五章第十七题(显示金字塔)(Display pyramid)

热门文章

  1. 【案例】长安汽车:构建全资产安全治理平台,夯实汽车行业数据安全基底
  2. 在Vue中搭建前端监控日志
  3. 微信小程序 - 获取用户当前位置信息(用于定位地址及获取地址等需求)
  4. 最新UE下载地址和可使用注册码(公布)
  5. Linux入门学习 —— 常用的基本命令(上)
  6. linux 文件755权限的意思,Linux文件和目录的777、755、644权限解释
  7. 计算机怎么搜索程序和文件格式,PDF软件如何快速搜索与查找文件?
  8. 浅谈如何通过自媒体渠道实现赚钱的途径与方法?
  9. GBase8s数据库以 RESTRICT 方式或 CASCADE 方式删除安全标签对象
  10. 北京化工大学数据结构2022/10/27作业 题解