удалить первый элемент из массива и вернуть массив минус первый элемент

102

var myarray = ["item 1", "item 2", "item 3", "item 4"];

//removes the first element of the array, and returns that element.
alert(myarray.shift());
//alerts "item 1"

//removes the last element of the array, and returns that element.
alert(myarray.pop());
//alerts "item 4"

  1. Как удалить первый массив, но вернуть массив за вычетом первого элемента
  2. В моем примере я должен получить, "item 2", "item 3", "item 4"когда удаляю первый элемент
Возрождение Браунмана
источник
6
alert(array.slice(1))илиarray.shift(); alert(array);
Thomas
2
@Thomas, когда я использую, myarray.shift()возвращает "item 1"то, что я хочу, это возврат"item 2", "item 3", "item 4"
Brownman Revival
Пожалуйста, прочтите весь код, который я написал, используяshift()
Thomas
1
Если вам нужно создать новый массив без первого элемента, используйте срез.
Arnial
6
Просто чтобы добавить еще один :) С деструктуризацией:[,...myarray] = myarray;
Me.Name

Ответы:

151

Это должно удалить первый элемент, а затем вы можете вернуть оставшиеся:

var myarray = ["item 1", "item 2", "item 3", "item 4"];
    
myarray.shift();
alert(myarray);

Как предлагали другие, вы также можете использовать slice (1);

var myarray = ["item 1", "item 2", "item 3", "item 4"];
  
alert(myarray.slice(1));

Йеспер Хойер
источник
27
Обратите внимание, что slice(1) не «удаляет первый элемент» из массива. Вместо этого он создает новый массив с мелкими копиями всех значений из массива, кроме первого.
TJ Crowder
2
Полезно использовать slice (1), если у вас есть массив массивов.
Flummox - не будь злом SE
25

Почему бы не использовать ES6?

 var myarray = ["item 1", "item 2", "item 3", "item 4"];
 const [, ...rest] = myarray;
 console.log(rest)

Тюдор Морар
источник
Мне нравится эта идея, за исключением того, что сначала это будет неиспользуемая константа.
giovannipds
3
Это можно исправить с помощью const [,...rest] = myarray= O = D
giovannipds
6

Попробуй это

    var myarray = ["item 1", "item 2", "item 3", "item 4"];

    //removes the first element of the array, and returns that element apart from item 1.
    myarray.shift(); 
    console.log(myarray); 
Я гикер
источник
вы пробовали это? см. мой обновленный вопрос с фрагментом, который он вернет"item 1"
Brownman Revival
3

Это можно сделать в одной строке с lodash _.tail:

var arr = ["item 1", "item 2", "item 3", "item 4"];
console.log(_.tail(arr));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

Пенни Лю
источник
-1

Вы можете использовать array.slice (0,1) // Первый индекс удаляется и возвращается массив.

Хасан Аббас
источник
2
Первый индекс не удаляется, копия создается без первого элемента. Исходный массив не изменяется.
Emaborsa
Кроме того, slice (0,1) вернет массив, содержащий только первый элемент . Вместо этого вам нужно вызвать slice (1), чтобы получить массив, содержащий все, кроме первого элемента, как в принятом ответе
schellmax