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
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
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

Дивіться також