.shift()

Удаляет первый элемент массива и возвращает значение удалённого элемента.

Время чтения: меньше 5 мин

Кратко

Скопировано

Метод 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.shift не имеет аргументов.

Array.shift возвращает удалённый элемент.

Если массив не имеет элементов, метод вернёт 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']