Você pode fazer isso usando o .slice()método como:
arr.slice(0, -1); // returns [1,0]
Aqui está uma demonstração:
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>
em vez de fazer:
arr.slice(-1); // returns [2]
Aqui está uma demonstração:
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>
Explicação:-
Agora, a sintaxe básica do método, Array.prototype.slice()ou resumidamente slice(), é:
arr.slice([begin[, end]])
Aqui,
o beginparâmetro é o índice baseado em zero no qual a extração de uma matriz é iniciada. Então, digamos, com base no exemplo acima, se fizermos algo como
arr.slice(0) // returns [1,0,2]
retornaria todos os elementos da matriz do início da sequência da posição 0 e é isso [1,0,2]. Da mesma forma, se fizermos
arr.slice(1) // returns [0,2]
retornaria [0,2]uma vez que 0 está na posição 1 aqui e tudo depois disso. Agora, no seu caso, você passou um índice negativo, ou seja, -1como o parâmetro begin, que indica um deslocamento do final da sequência. Portanto, slice(-1)no seu caso, extrai o último elemento da matriz na sequência e é isso 2( como já vimos na demonstração acima ).
Agora, vamos falar sobre o endparâmetro na slice()sintaxe do método aqui. É novamente um índice baseado em zero no qual a extração de uma matriz termina. Então, digamos que temos uma matriz como: -
var arr = [1, 0, 2, 5, 3, 9];
e queremos obter apenas os 2,5,3elementos da matriz. Agora, a posição 2do início da sequência é 2e, para o último elemento 3, é 4. Precisamos terminar a extração aqui na posição 5, pois precisamos obter o elemento antes dessa posição. Então, vamos simplesmente implementar o slice()método aqui como
arr.slice(2, 5) // returns [2,5,3]
No seu caso, implementamos -1como parâmetro final, portanto, nosso código é como
arr.slice(0, -1) // returns [1,0]
Como um índice negativo, endindica um deslocamento do final da sequência. Portanto, slice(0,-1)extrai o primeiro elemento pelo penúltimo elemento na sequência. Então, obtemos a saída desejada. Nós também podemos fazer como
arr.slice(0, 2) // returns [1,0]
obteremos a mesma saída. Mas, eu usei -1aqui como é mais fácil de implementar, mesmo para uma longa matriz como
[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]
Se você apenas deseja remover o último elemento, não deseja sentar e calcular a posição dos últimos 9 aqui e assim por diante arr.slice(0, 22). Você pode simplesmente implementar a lógica do índice negativo aqui e fazer
arr.slice(0, -1) // same result as arr.slice(0, 22)
Espero que ajude!