0
点赞
收藏
分享

微信扫一扫

js 队列方法

就像栈是以 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
    ```

举报

相关推荐

0 条评论