Array.prototype.shift()

基线 广泛可用

此功能已十分成熟,并在许多设备和浏览器版本中正常运行。它自 2015 年 7 月.

报告反馈

试试看

语法

shift() 方法是 Array 实例的方法,它会从数组中移除第一个元素并返回该移除的元素。此方法会改变数组的长度。
shift()

js

参数

无。

返回值

描述

从数组中移除的元素;如果数组为空,则为 undefined

shift() 方法会移除索引为零的元素,并将连续索引处的元素向左移动,然后返回移除的元素。如果 length 属性为 0,则返回 undefined

pop() 方法的行为与 shift() 类似,但应用于数组中的最后一个元素。

shift() 方法是一个 修改方法。它会改变 this 的长度和内容。如果您希望 this 的值保持不变,但返回一个移除第一个元素的新数组,则可以使用 arr.slice(1) 代替。

示例

shift() 方法是 通用的。它只期望 this 值具有 length 属性和整数键属性。尽管字符串也是类似数组的,但此方法不适合应用于字符串,因为字符串是不可变的。

从数组中移除元素

shift() 方法是 Array 实例的方法,它会从数组中移除第一个元素并返回该移除的元素。此方法会改变数组的长度。
const myFish = ["angel", "clown", "mandarin", "surgeon"];

console.log("myFish before:", myFish);
// myFish before: ['angel', 'clown', 'mandarin', 'surgeon']

const shifted = myFish.shift();

console.log("myFish after:", myFish);
// myFish after: ['clown', 'mandarin', 'surgeon']

console.log("Removed this element:", shifted);
// Removed this element: angel

以下代码显示移除第一个元素之前和之后的 myFish 数组。它还显示移除的元素

在 while 循环中使用 shift() 方法

shift() 方法是 Array 实例的方法,它会从数组中移除第一个元素并返回该移除的元素。此方法会改变数组的长度。
const names = ["Andrew", "Tyrone", "Paul", "Maria", "Gayatri"];

while (typeof (i = names.shift()) !== "undefined") {
  console.log(i);
}
// Andrew, Tyrone, Paul, Maria, Gayatri

shift() 方法通常在 while 循环中的条件内使用。在以下示例中,每次迭代都会从数组中移除下一个元素,直到数组为空

对非数组对象调用 shift()

shift() 方法是 Array 实例的方法,它会从数组中移除第一个元素并返回该移除的元素。此方法会改变数组的长度。
const arrayLike = {
  length: 3,
  unrelated: "foo",
  2: 4,
};
console.log(Array.prototype.shift.call(arrayLike));
// undefined, because it is an empty slot
console.log(arrayLike);
// { '1': 4, length: 2, unrelated: 'foo' }

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

规范

shift() 方法会读取 thislength 属性。如果 规范化长度 为 0,则 length 将再次设置为 0(而它之前可能是负数或 undefined)。否则,将返回索引为 0 的属性,并将其余属性向左移动一个位置。length 属性减 1。
规范
# ECMAScript 语言规范

浏览器兼容性

sec-array.prototype.shift

另请参阅