就像栈是以 LIFO 形式限制访问的数据结构一样,队列以先进先出(FIFO,First-In-First-Out)形式 限制访问。队列在列表末尾添加数据,但从列表开头获取数据。因为有了在数据末尾添加数据的 push() 方法,所以要模拟队列就差一个从数组开头取得数据的方法了。
这个数组方法叫 shift(),它会删除数 组的第一项并返回它,然后数组长度减 1。使用 shift()和 push(),可以把数组当成队列来使用:
let colors = new Array(); // 创建一个数组 let count = colors.push("red", "green"); // 推入两项
alert(count);
count = colors.push("black"); // 再推入一项 alert(count); // 3
let item = colors.shift(); // 取得第一项 alert(item); // red alert(colors.length); // 2
// 2
这个例子创建了一个数组并用push()方法推入三个值。加粗的那行代码使用shift()方法取得了 数组的第一项,即"red"。删除这一项之后,"green"成为第一个元素,"black"成为第二个元素,数 组此时就包含两项。
ECMAScript也为数组提供了unshift()方法。顾名思义,unshift()就是执行跟shift()相反的 操作:在数组开头添加任意多个值,然后返回新的数组长度。通过使用 unshift()和 pop(),可以在 相反方向上模拟队列,即在数组开头添加新数据,在数组末尾取得数据,如下例所示:
let colors = new Array(); // 创建一个数组
let count = colors.unshift("red", "green"); // 从数组开头推入两项 alert(count); // 2
count = colors.unshift("black"); // 再推入一项 alert(count); // 3
let item = colors.pop(); // 取得最后一项 alert(item); // green alert(colors.length); // 2
这里,先创建一个数组,再通过 unshift()填充数组。首先,给数组添加"red"和"green",再添 加"black",得到["black","red","green"]。调用 pop()时,删除最后一项"green"并返回它。
let person1 = {
toLocaleString() {
return "Nikolaos";
},
toString() {
return "Nicholas";
} };
let person2 = {
toLocaleString() {
return "Grigorios";
},
toString() {
return "Greg";
} };
let people = [person1, person2];
alert(people);
alert(people.toString());
alert(people.toLocaleString()); // Nikolaos,Grigorios
```
标签:count,队列,alert,colors,let,数组,green,js,方法
From: https://blog.51cto.com/u_16298168/9233144