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



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



var arr = [1,0,2];


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



Я arr.slice(-1); но это не отменяет ценность.

818   18  

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 в качестве конечного параметра, так что наш код, как

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]

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

arr.pop();

вы могли бы просто использовать, arr.pop()

при этом удаляется последняя запись массива.

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

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

удалить последний 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) - это решение звучит хорошо. Но Это howmany будет работать только для положительного индекса массива. Чтобы удалить последние два или три элемента, используйте сам индекс.

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

стоит отметить, что slice оба вернут a новая массив, а .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

это может потребовать гораздо больше возиться, и переменное управление, чтобы сделать то же самое с "поп", так как в отличие от 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() как 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]

Comments

    Ничего не найдено.