Вы можете сделать это с помощью .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
качестве параметра начала, который указывает смещение от конца последовательности. Итак, slice(-1)
в вашем случае извлекает последний элемент массива в последовательности, и это 2
( как мы уже видели в приведенной выше демонстрации ).
Теперь поговорим о end
параметре в 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)
. Вы можете просто реализовать логику отрицательного индекса здесь и сделать
arr.slice(0, -1) // same result as arr.slice(0, 22)
Надеюсь, поможет!