Spec-Zone.ru › JavaScript

Array.prototype.shift()

Базовый уровень Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

Метод shift() экземпляров Array удаляет первый элемент из массива и возвращает этот удаленный элемент. Этот метод изменяет длину массива.

Попробуйте

const array = [1, 2, 3];

const firstElement = array.shift();

console.log(array);
// Expected output: Array [2, 3]

console.log(firstElement);
// Expected output: 1

Синтаксис

shift()

Параметры

Нет.

Возвращаемое значение

Удаленный элемент из массива; undefined, если массив пуст.

Описание

Метод shift() сдвигает все значения влево на 1 и уменьшает длину на 1, в результате чего удаляется первый элемент. Если свойство length равно 0, возвращается undefined.

Метод pop() имеет схожее поведение с shift(), но применяется к последнему элементу массива.

Метод shift() является мутирующим методом. Он изменяет длину и содержимое this. Если вы хотите, чтобы значение this оставалось тем же, но возвращался новый массив с удаленным первым элементом, вместо этого вы можете использовать arr.slice(1).

Метод shift() является общим. Он ожидает только, что значение this будет иметь свойство length и целочисленные свойства. Хотя строки также похожи на массивы, этот метод не подходит для их применения, поскольку строки неизменяемы.

Примеры

Удаление элемента из массива

Следующий код отображает массив myFish до и после удаления его первого элемента. Он также отображает удаленный элемент:

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

Использование метода shift() в цикле while

Метод shift() часто используется в условии внутри цикла while. В следующем примере каждая итерация будет удалять следующий элемент из массива, пока он не станет пустым:

const names = ["Andrew", "Tyrone", "Paul", "Maria", "Gayatri"];

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

Вызов shift() для объектов, не являющихся массивами

Метод shift() считывает свойство length объекта this. Если нормализованная длина равна 0, свойство length снова устанавливается на 0 (хотя оно могло быть отрицательным или undefined ранее). В противном случае возвращается свойство с индексом 0, а остальные свойства сдвигаются влево на одну позицию. Свойство с индексом length - 1 удаляется, а свойство length уменьшается на единицу.

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 }

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-array.prototype.shift

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS Bun Deno Node.js
shift
1
12
1
4
1
18
4
10.1
1
1.0
1
1
1.0.0
1.0
0.10.0

См. также

  • Руководство по индексированным коллекциям
  • Array
  • Array.prototype.push()
  • Array.prototype.pop()
  • Array.prototype.unshift()
  • Array.prototype.concat()
  • Array.prototype.splice()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API