Вы можете сделать это с помощью .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)
Надеюсь, поможет!