方法队列(queue)是最常见的使用数组的方法之一。
在计算机科学中,这表示支持两个操作的一个有序元素的集合:
push 在末端添加一个元素.
shift 取出队列首端的一个元素,整个队列往前移,这样原先排第二的元素现在排在了第一。
这两种操作数组都支持。队列的应用在实践中经常会碰到。例如需要在屏幕上显示消息队列。数组还有另一个用例,就是数据结构 栈。
它支持两种操作:
push 在末端添加一个元素.
pop 从末端取出一个元素.
所以新元素的添加和取出都是从“末端”开始的。
栈通常被被形容成一叠卡片:要么在最上面添加卡片,要么从最上面拿走卡片:
对于栈来说,最后放进去的内容是最先接收的,也叫做 LIFO(Last-In-First-Out),即后进先出法则。而与队列相对应的叫做 FIFO(First-In-First-Out),即先进先出。
JavaScript 中的数组既可以用作队列,也可以用作栈。
它们允许你从首端/末端来添加/删除元素。
这在计算机科学中,允许这样的操作的数据结构被称为 双端队列(deque)。
作用于数组末端的方法:
pop 取出并返回数组的最后一个元素:
let fruits=["Apple","Orange","Pear"];
alert(fruits.pop());
// 移除 "Pear"
// 然后 alert 显示出来alert(fruits);
// Apple, Orange
fruits.pop() 和 fruits.at(-1) 都返回数组的最后一个元素,但 fruits.pop() 同时也删除了数组的最后一个元素,进而修改了原数组。
push 在数组末端添加元素:
let fruits=["Apple","Orange"];
fruits.push("Pear");
alert(fruits);// Apple, Orange, Pear
调用 fruits.push(...) 与 fruits[fruits.length] = ... 是一样的。
作用于数组首端的方法:shift取出数组的第一个元素并返回它:
let fruits=["Apple","Orange","Pear"];
alert(fruits.shift());
// 移除 Apple 然后 alert 显示出来alert(fruits);
// Orange, Pearunshift在数组的首端添加元素:
let fruits=["Orange","Pear"];
fruits.unshift('Apple');
alert(fruits);// Apple, Orange,
Pearpush 和 unshift 方法都可以一次添加多个元素:
let fruits=["Apple"];
fruits.push("Orange","Peach");
fruits.unshift("Pineapple","Lemon");
// ["Pineapple", "Lemon", "Apple", "Orange", "Peach"]
alert(fruits);