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 begin
parâ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, -1
como 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 end
parâ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,3
elementos da matriz. Agora, a posição 2
do início da sequência é 2
e, 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 -1
como parâmetro final, portanto, nosso código é como
arr.slice(0, -1) // returns [1,0]
Como um índice negativo, end
indica 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 -1
aqui 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!