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 }
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
- Руководство по индексированным коллекциям
ArrayArray.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