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"]
вы можете сделать это с помощью
.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). Тогда вы можете просто реализуйте логику отрицательного индекса здесь & doarr.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():
arr.splice(-1,1)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