Array.prototype.shift()
Метод shift()
(зсунути) примірників Array
прибирає з масиву перший елемент – і повертає прибраний елемент. Цей метод змінює довжину масиву.
Спробуйте його в дії
Синтаксис
shift()
Параметри
Жодних.
Повернене значення
Значення, котре було прибрано з масиву; undefined
, якщо масив порожній.
Опис
Метод shift()
прибирає елемент за нульовим індексом і зсуває значення за наступними індексами вліво, а потім повертає прибране значення. Якщо властивість
length
має значення 0, то повертається undefined
.
Метод pop()
має подібну до shift()
логіку, але застосовану до останнього елемента масиву.
Метод shift()
– це змінювальний метод: змінює довжину й вміст this
. Коли треба не внести зміни до this
, а повернути новий масив без першого елемента, можна натомість застосувати arr.slice(1)
.
Метод shift()
є узагальненим. Він лишень очікує, що значення this
матиме властивість length
, а також цілочислові властивості. Попри те, що рядки також є масивоподібними значеннями, цей метод не підходить для застосування до них, адже рядки є незмінними.
Приклади
Усунення елемента з масиву
Код нижче демонструє масив myFish
до і після усунення його першого елемента. Крім того, він демонструє усунутий елемент:
const myFish = ["янгол", "клоун", "мандаринка", "осетер"];
console.log("myFish до:", myFish);
// myFish до: ['янгол', 'клоун', 'мандаринка', 'осетер'];
const shifted = myFish.shift();
console.log("myFish після:", myFish);
// myFish after: ['клоун', 'мандаринка', 'осетер'];
console.log("Усунуто такий елемент:", shifted);
// Усунуто такий елемент: янгол
Застосування метода shift() у циклі while
Метод shift() нерідко застосовують всередині умови циклу while. В наступному прикладі кожна ітерація прибирає з масиву наступний елемент, поки він не стане порожнім:
const names = ["Артем", "Владлен", "Максим", "Марія", "Фахрудін"];
while (typeof (i = names.shift()) !== "undefined") {
console.log(i);
}
// Артем, Владлен, Максим, Марія, Фахрудін
Виклик shift() на об'єктах-немасивах
Метод shift()
зчитує з this
властивість length
. Якщо нормалізована довжина – 0, то length
наново присвоюється 0
(хоч до цього в цій властивості могло бути від'ємне значення або undefined
). Інакше – повертається значення властивості 0
, а решта властивостей зсовується вліво на один крок.
const arrayLike = {
length: 3,
unrelated: "foo",
2: 4,
};
console.log(Array.prototype.shift.call(arrayLike));
// undefined, адже це порожня комірка
console.log(arrayLike);
// { '1': 4, length: 2, unrelated: 'foo' }
const plainObj = {};
// Властивості length немає, тому довжина – 0
Array.prototype.shift.call(plainObj);
console.log(plainObj);
// { length: 0 }
Специфікації
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
shift
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 5.5 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |