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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.