Array.prototype.pop()

基线 广泛可用

此功能已经很好地建立起来,并且在许多设备和浏览器版本中都有效。它自 2015 年 7 月.

报告反馈

试一试

语法

pop() 方法 Array 实例从数组中删除最后一个元素并返回该元素。此方法会更改数组的长度。
pop()

js

参数

无。

返回值

描述

从数组中删除的元素;undefined 如果数组为空。

pop() 方法会删除数组中的最后一个元素,并将该值返回给调用者。如果您在空数组上调用 pop(),它将返回 undefined.

Array.prototype.shift() 的行为类似于 pop(),但应用于数组中的第一个元素。

pop() 方法是一种变异方法。它会更改 this 的长度和内容。如果您希望 this 的值保持不变,但返回一个新数组,其中删除了最后一个元素,您可以使用 arr.slice(0, -1) 而不是。

示例

删除数组的最后一个元素

以下代码创建包含四个元素的 myFish 数组,然后删除其最后一个元素。

pop() 方法 Array 实例从数组中删除最后一个元素并返回该元素。此方法会更改数组的长度。
const myFish = ["angel", "clown", "mandarin", "sturgeon"];

const popped = myFish.pop();

console.log(myFish); // ['angel', 'clown', 'mandarin' ]

console.log(popped); // 'sturgeon'

在非数组对象上调用 pop()

pop() 方法会读取 thislength 属性。如果规范化的长度 为 0,则 length 将再次设置为 0(而在之前它可能是负数或 undefined)。否则,将返回 length - 1 处的属性并将其删除

pop() 方法 Array 实例从数组中删除最后一个元素并返回该元素。此方法会更改数组的长度。
const arrayLike = {
  length: 3,
  unrelated: "foo",
  2: 4,
};
console.log(Array.prototype.pop.call(arrayLike));
// 4
console.log(arrayLike);
// { length: 2, unrelated: 'foo' }

const plainObj = {};
// There's no length property, so the length is 0
Array.prototype.pop.call(plainObj);
console.log(plainObj);
// { length: 0 }

以数组方式使用对象

pushpop 故意是通用的,我们可以利用这一点——如下面的示例所示。

请注意,在此示例中,我们没有创建数组来存储对象集合。相反,我们将集合存储在对象本身中,并在 Array.prototype.pushArray.prototype.pop 上使用 call 来欺骗这些方法,使其认为我们正在处理数组。

pop() 方法 Array 实例从数组中删除最后一个元素并返回该元素。此方法会更改数组的长度。
const collection = {
  length: 0,
  addElements(...elements) {
    // obj.length will be incremented automatically
    // every time an element is added.

    // Returning what push returns; that is
    // the new value of length property.
    return [].push.call(this, ...elements);
  },
  removeElement() {
    // obj.length will be decremented automatically
    // every time an element is removed.

    // Returning what pop returns; that is
    // the removed element.
    return [].pop.call(this);
  },
};

collection.addElements(10, 20, 30);
console.log(collection.length); // 3
collection.removeElement();
console.log(collection.length); // 2

规范

规范
ECMAScript 语言规范
# sec-array.prototype.pop

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅