JavaScript引用类型之Array数组的栈方法与队列方法
2023-09-11 14:21:53 时间
一、栈方法
ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法。具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构。栈是一种LIFO(Last In First Out先进后出)的数据结构,也就是最新添加的项最早被移出,ECMAScript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。
1、push()方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度,代码如下:
<script> var colors=new Array(); var count=colors.push("red","blue"); alert(colors.toString()); //输出:red,blue alert(count); //输出2 count=colors.push("black"); alert(count); //输出3 </script>
分析上面的代码发现,每次push完返回的都是最后一次push后数组的长度!
2、pop()方法则从数组末尾移除最后一项,减少数组的length,返回移除的项。代码如下:
<script> var colors=new Array(); var count=colors.push("red","blue"); var item=colors.pop(); alert(item); //输出:blue alert(colors.length);//输出:1 </script>
二、队列方法
通过Array类型的push()和pop()方法我们可以模拟栈的后进先出,从上面的代码可以看出,而队列数据结构的访问规则是FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,在列表的前端移除项。由于push()是向数组末端添加项的方法,因此要模拟队列只需从数组前端取得项的方法。这个方法就是:
1、shift() 移除数组中的第一项并返回该项,同时数组长度减1 代码如下:
<script> //利用shift()和push()模拟队列 后面追加元素,前面移出元素 var colors=new Array(); var count=colors.push("red","blue");//推入两项 alert(count); //输出:2 count=colors.push("black"); alert(count); //输出:3 var item=colors.shift(); alert(item);//输出:red alert(colors.length);//输出:2 </script>
2、unshift()
ECMAScript还为数组提供了一个unshift()方法,顾名思义,该方法与shift()方法刚好相反,他是从顶端添加项,unshift()和pop()方法搭配,可以从反方向来模拟队列。代码如下:
<script> //利用unshift()和pop()方法模拟反向队列 前面追加元素,后面去除元素 var colors=new Array("red","blue","green"); var count=colors.unshift("blue"); alert(count); //输出:4 alert(colors.toString()); //输出:blue,red,blue,green blue被追加到数组的最前端 var item=colors.pop(); alert(item); //输出:green pop()方法将最后面一项green移出 alert(colors.length); //输出:3 </script>
相关文章
- javascript入门教程(二):变量
- JavaScript Number 对象
- [Javascript] Data ownership, avoid accidently mutation
- [Javascript] Check Promise is Promise
- [Javascript] Use requestIdleCallback to schedule JavaScript tasks at an optimal time
- [Javascript] Object.assign()
- [Javascript] An Introduction to JSPM (JavaScript Package Manager)
- [Javascript] Linting JavaScript with ESLint
- JavaScript push()和splice()方法
- javascript中的querySelector()和querySelectorAll()
- [Functional Programming] Use a Javascript Array to Construct a Maybe
- [Javascript] Redirect the browser using JavaScript
- Javascript定义类(class)的三种方法
- 10个算法提升你的JavaScript技能
- rxjs里subscribeToArray的一个JavaScript模拟实现
- 在javascript中将字符串转换为数字的6种方法
- 在 JavaScript 中访问对象属性的 3 种方法
- JavaScript数组的常用方法总结:遍历,复制,反转,排序,添加,删除(前端常见面试题必考必问)实例演示
- 【华为OD机试 2023】 机房布局(C++ Java JavaScript Python)
- 【华为OD机试 2023】几何平均值最大子数组(C++ Java JavaScript Python)
- typeof + instanceof+toString+constructor什么推理javascript数据类型
- Javascript Array 方法整理
- JavaScript 方法、对象