Удалить последний элемент из массива

у меня есть следующий массив.

var arr = [1,0,2];

Я хотел бы удалить последний элемент, т. е. 2.

Я arr.slice(-1); но он не удаляет значение.

18 ответов


использовать соединение (индекс,howmany)

arr.splice(-1,1)

let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();

console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]

документация массива.прототип.поп на MDN


вы можете сделать это с помощью .slice() методика:

arr.slice(0, -1);    // returns [1,0]

вот демо:

var arr = [1, 0, 2];
var newArr = arr.slice(0, -1);    // returns [1,0]

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array    : </b>
<div id="div1"></div>
<br/>
<b>After slice(0, -1): </b>
<div id="div2"></div>

вместо :

arr.slice(-1);   // returns [2]

вот демо:

var arr = [1, 0, 2];
var newArr = arr.slice(-1);    // returns [2]

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array    : </b>
<div id="div1"></div>
<br/>
<b>After slice(-1): </b>
<div id="div2"></div>

объяснение:

теперь основной синтаксис Array.prototype.slice() или короче slice() метод:

arr.slice([begin[, end]])

здесь

в begin параметр-это нулевой индекс, при котором начинается извлечение из массива. Итак, давайте скажем, основываясь на приведенном выше примере, если мы сделаем что-то вроде

arr.slice(0)    // returns [1,0,2]

он вернет все элементы массива из начала последовательности из позиции 0, и это [1,0,2]. Аналогично, если мы сделаем

arr.slice(1)    // returns [0,2]

вернет [0,2] так как 0 находится в позиции 1 здесь и все после этого. Теперь в вашем случае вы прошли отрицательный индекс, т. е. -1 в качестве параметра begin, что указывает на смещение от конца последовательности. Итак,slice(-1) в вашем случае извлекает последний элемент массива в последовательность, и это 2 (как мы уже видели в приведенном выше демо).

теперь давайте поговорим о на slice() синтаксис метода здесь. Это снова нулевой индекс, на котором заканчивается извлечение из массива. Итак, допустим, у нас есть массив: -

var arr = [1, 0, 2, 5, 3, 9];

и мы хотим получить только 2,5,3 элементы в массиве. Теперь положение 2 от начала последовательности2 и для последнего элемента 3 это 4. Нам нужно будет закончить извлечение здесь позиции 5, так как нам нужно получить элемент до этой позиции. Итак, мы просто реализуем slice() способ здесь как

arr.slice(2, 5)    // returns [2,5,3]

в вашем случае, мы внедрили -1 в качестве параметра end, поэтому наш код похож на

arr.slice(0, -1)   // returns [1,0]

как отрицательный показатель, end задает смещение с конца последовательности. Итак,slice(0,-1) извлекает первый элемент через предпоследний элемент в последовательности. Итак, получаем желаемый результат. Мы также можем сделать как

arr.slice(0, 2)    // returns [1,0]

мы получим тот же результат. Но, я использовал -1 здесь, как его проще реализовать даже для длинного массива, как

[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]

если вы просто хотите удалить последний элемент, вы не хотите сидеть и вычислять позицию последнего 9 здесь и делать как arr.slice(0, 22). Тогда вы можете просто реализуйте логику отрицательного индекса здесь & do

arr.slice(0, -1) // same result as arr.slice(0, 22)

надеюсь, это поможет!


вам нужно будет сделать это, так как slice не изменяет исходный массив.

arr = arr.slice(-1);

если вы хотите изменить исходный массив, вы можете использовать splice:

arr.splice(-1, 1);

или pop:

arr.pop();

учатся на примере:

let array_1 = [1,2,3,4];
let array_2 = [1,2,3,4];
let array_3 = [1,2,3,4];

array_1.splice(-1,1)  // output --> [4]      array_1 = [1,2,3]
array_2.slice(0,-1);  // output --> [1,2,3]  array_2 = [1,2,3,4]
array_3.pop();        // output --> 4        array_3 = [1,2,3]

для этого есть функция, explanation здесь:

arr.pop();

Вы можете просто использовать,arr.pop()

Это удаляет последний элемент массива.

var arr = [1,0,2]; 
var popped = arr.pop();//Now arr = [1,0] & popped = 2

arr.slice(-1) вернет скопировать последнего элемента массива, но оставляет исходный массив без изменений.

удалить последний n элементы из массива, используйте arr.splice(-n) (обратите внимание на "p "в"splice"). Возвращаемым значением будет новый массив, содержащий удаленные элементы.

еще проще, для n == 1 используйте val = arr.pop()


var arr = [1,0,2];
arr.length--; 

// удаляет последний элемент // нужно проверить, если arr.длина > 0


этот метод более полезен для удаления и хранения последнего элемента матрица.

var sampleArray = [1,2,3,4];// Declaring the array
var lastElement = sampleArray.pop();//this command will remove the last element of `sampleArray` and stores in a variable called `lastElement` so that you can use it if required.

вот результаты:

console.log(sampleArray); //This will give you [1,2,3]
console.log(lastElement); //this will give you 4

Я считаю .pop() чтобы быть наиболее "правильным" решением, однако иногда это может не работать, так как вам нужно использовать массив без последнего элемента прямо там...

в таком случае вы можете использовать следующие

var arr = [1,2,3,4];
console.log(arr.splice(0,arr.length-1));

пока .pop() вернется это (4):

var arr = [1,2,3,4];
console.log(arr.pop());

что может быть нежелательно...

надеюсь, это сэкономит вам время.


splice (index,howmany) - это решение звучит хорошо. Но Это!--1-->howmany будет работать только для положительного индекса массива. Чтобы удалить последние два или три элемента, используйте сам индекс.

например, сращивание (-2) для удаления последних двух элементов. соединения(-3) для удаления последних трех пунктов.


стоит отметить, что slice возвращают новая массив, а .pop() и .splice() будет мутировать существующей массив.

Если вам нравится обрабатывать коллекции данных с прикованным командным стилем, вы действительно захотите придерживаться slice Для что-то вроде этого.

например:

myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var newArrayOfThings = myArray
  .filter(x => x > 5)              // only bigly things
  .slice(-1)                       // get rid of the last item
  .map(x => `The number is: ${x}`);// map to a set of strings

это может потребовать гораздо больше возни и управления переменными, чтобы сделать то же самое с "pop", так как в отличие от map, filter и т. д. Вы не получаете новый массив обратно.

это то же самое, с push, которая добавляет элемент в конец массива. Возможно, вам будет лучше с concat так как это позволяет вам поддерживать поток.

myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var newArrayOfThings = myArray
  .filter(x => x > 5)              // only bigly things
  .slice(-1)                       // get rid of the "10"
  .concat([100])                   // note with concat, you must pass an array
  .map(x => `The number is: ${x}`) // map to a set of strings
  

вы можете сделать это двумя способами с помощью splice():

  1. arr.splice(-1,1)
  2. arr.splice(arr.length-1,1)

splice(position_to_start_deleting, how_many_data_to_delete) принимает два параметра.

position_to_start_deleting: индекс на основе нуля, откуда начать удаление. how_many_data_to_delete : из указанного индекса, сколько последовательных данных должно быть удалено.

вы также можете удалить последний элемент, используя pop() as pop() удаляет последний элемент из некоторого массива.
Использовать arr.pop()


скажите, что у вас есть var arr = [1,0,2]

arr.splice(-1,1) вернутся к вам array [1,0]; пока arr.slice(-1,1) вернутся к вам array [2];


это хороший способ удалить последний элемент:

if (arr != null && arr != undefined && arr.length > 0) {
      arr.splice(arr.length - 1, 1);
}

деталь соединения следующим образом:

соединение (startIndex, количество соединений)


var stack = [1,2,3,4,5,6];

stack.reverse().shift();

stack.push(0);

выход будет: массив[0,1,2,3,4,5]. Это позволит вам сохранить то же количество элементов массива, что и при вводе нового значения.


С Lodash вы можете использовать dropRight, Если вы не хотите знать, какие элементы были удалены:

_.dropRight([1, 2, 3])
// => [1, 2]

_.dropRight([1, 2, 3], 2);
// => [1]