Клавиша / esc

.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']