Кратко
СкопированоМетод shift удаляет из массива элемент с индексом 0 и возвращает значение удалённого элемента.
Пример
СкопированоУдалим из массива цифр элемент с индексом 0:
const numbers = [8, 16, 32, 64]const firstItem = numbers.shift()console.log(numbers)// [16, 32, 64]console.log(firstItem)// 8
const numbers = [8, 16, 32, 64]
const firstItem = numbers.shift()
console.log(numbers)
// [16, 32, 64]
console.log(firstItem)
// 8
Как пишется
СкопированоArray не имеет аргументов.
Array возвращает удалённый элемент.
Если массив не имеет элементов, метод вернёт undefined:
const numbers = []const firstItem = numbers.shift()console.log(firstItem)// undefined
const numbers = []
const firstItem = numbers.shift()
console.log(firstItem)
// undefined
Как понять
СкопированоДля нумерации элементов в массиве используются индексы. Первый элемент массива имеет индекс 0.
Метод shift позволяет удалить из массива первый элемент или, говоря иначе, элемент с индексом 0, выполняя сдвиг всех элементов влево.
Подробнее о сдвиге
Согласно спецификации ECMAScript, алгоритм работы метода shift включает цикл, предназначенный для сдвига элементов.
Для наглядности выполним метод shift для массивоподобного объекта. Для этого необходимо, чтобы объект имел поле length, определяющее количество элементов. Порядок следования полей-элементов в объекте не влияет на работу метода, потому что доступ к значениям осуществляется по ключам-индексам:
const arrayLike = { 2: 'two', 1: 'one', 0: 'zero', length: 3}console.log(arrayLike)// {'0': 'zero', '1': 'one', '2': 'two', length: 3}Array.prototype.shift.call(arrayLike)console.log(arrayLike)// {'0': 'one', '1': 'two', length: 2}
const arrayLike = {
2: 'two',
1: 'one',
0: 'zero',
length: 3
}
console.log(arrayLike)
// {'0': 'zero', '1': 'one', '2': 'two', length: 3}
Array.prototype.shift.call(arrayLike)
console.log(arrayLike)
// {'0': 'one', '1': 'two', length: 2}
В результате работы метода все оставшиеся поля-элементы были записаны с новыми ключами-индексами и изменилось поле length.
Для удаления первого элемента также может быть использован метод splice:
const colors = ['red', 'green', 'blue']colors.splice(0, 1)console.log(colors)// ['green', 'blue']
const colors = ['red', 'green', 'blue']
colors.splice(0, 1)
console.log(colors)
// ['green', 'blue']