当前位置:网站首页>数组的push()、pop()、shift()和unshift()方法讲解
数组的push()、pop()、shift()和unshift()方法讲解
2022-08-08 21:02:00 【皮皮灬虾】
数组的push()、pop()、shift()和unshift()方法
avaScript的数组是一个拥有堆栈和队列自身优点的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浏览器控制台输出的效果如下图所示:

边栏推荐
- Introduction to GeoServer: 01-Introduction
- 文档图像二值化DIB_paper_2(更新中...)
- Flask 教程 第二章:模板
- Some useful frameworks in Kotlin
- Socket (udp) console program under window
- GeoServer入门学习:04-发布Shapfile地图数据
- Bluu Seafood launches first lab-grown fish products
- 磁控胶囊胃镜:具有良好耐受性的非侵入性胃镜检查
- Redis Bloom Filter
- 怎样在网上开户买股票比较安全?如何办理开户业务?
猜你喜欢

第十三届蓝桥杯(Web 应用开发)线上模拟赛【第九题】(知乎首页数据动态化)

Bluu Seafood launches first lab-grown fish products

Centos下载安装redis- 使用yum

C#版网络对战五子棋以及Socket通信

编译原理——词法分析程序(C#)

阿里云祝顺民:算力网络架构的新探索

【转发与重定向(二)】

The new library online | CnOpenDataA shares of the listed company basic information data

安装sentry

神经网络论文Enhancing deep neural networks via multiple kernel learning
随机推荐
Socket (udp) console program under window
360杜跃进ISC演讲:保障信创软件的可信性和安全性是信创安全体系的基础
Flask 教程 第十二章:日期和时间
Introduction to GeoServer: 01-Introduction
【时间戳转普通时间格式的方法】
pytorch实现数据集读取/下载
GeoServer入门学习:02-安装部署
GeoServer入门学习:05-多层级MBTiles规范数据发布
怎样在网上开户买股票比较安全?如何办理开户业务?
[The browser opens the exported excel]
fastapi-后台任务、定时任务与消息队列
图神经网络GNN简介及应用方向
AtCoder Beginner Contest 263(A~F)
一下科技:未来短视频行业发展呈四大趋势
IO in Kotlin flow
Non-resolvableparent POM for xxxx: Could not find artifact xxx and ‘parent.relativePath‘ points at
二分查找的坑
【梦想的声音】
去噪论文 Attention-Guided CNN for Image Denoising
编译原理——逆波兰式分析程序(C#)