Eu tenho a seguinte matriz.
var arr = [1,0,2];
Gostaria de remover o último elemento, ou seja, 2.
Eu usei, arr.slice(-1);
mas ele não remove o valor.
javascript
arrays
slice
Prithviraj Mitra
fonte
fonte
arr.slice(0,-1)
foi a melhor solução para mimsplice()
, segundo caso:pop()
.Respostas:
Usar emenda (índice, quantos)
fonte
[1].splice(-1, 1)
=>[1]
[0,1,2] -> [2]
, deixando para trás[0,1]
. Se for esse o caso, então[arr.pop()]
fará o truque.array.pop()
isso mudará modificararray
, enquantoslice(0, -1)
não será. O pop é obviamente mais rápido, mas nem sempre é adequado para todas as necessidades.Array.prototype.pop () por convenção de JavaScript.
fonte
Você pode fazer isso usando o
.slice()
método como:Aqui está uma demonstração:
em vez de fazer:
Aqui está uma demonstração:
Explicação:-
Agora, a sintaxe básica do método,
Array.prototype.slice()
ou resumidamenteslice()
, é: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 comoretornaria todos os elementos da matriz do início da sequência da posição 0 e é isso
[1,0,2]
. Da mesma forma, se fizermosretornaria
[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 é isso2
( como já vimos na demonstração acima ).Agora, vamos falar sobre o
end
parâmetro naslice()
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: -e queremos obter apenas os
2,5,3
elementos da matriz. Agora, a posição2
do início da sequência é2
e, para o último elemento3
, é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 oslice()
método aqui comoNo seu caso, implementamos
-1
como parâmetro final, portanto, nosso código é comoComo 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 comoobteremos a mesma saída. Mas, eu usei
-1
aqui como é mais fácil de implementar, mesmo para uma longa matriz comoSe 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 fazerEspero que ajude!
fonte
arr
mas retorna uma nova matriz que exclui esse último item. Como os documentos da Mozilla dizem: "O método slice () retorna uma cópia superficial de uma parte de uma matriz para um novo objeto de matriz".arr.slice(0, -1)
é a melhor resposta.aprenda pelo exemplo:
fonte
Você precisaria fazer isso, pois
slice
não altera a matriz original.Se você deseja alterar a matriz original, pode usar
splice
:ou
pop
:fonte
Eu consideraria
.pop()
a solução mais 'correta', no entanto, às vezes pode não funcionar, pois você precisa usar a matriz sem o último elemento ali ...Nesse caso, você pode querer usar o seguinte, ele retornará
[1,2,3]
while
.pop()
retornaria4
:o que pode não ser desejável ...
Espero que isso poupe algum tempo.
fonte
Há uma função para isso, explicação aqui :
fonte
Você poderia simplesmente usar,
arr.pop()
Isso remove a última entrada da matriz.
fonte
Basta usar o seguinte para o seu caso de uso:
Apenas uma nota. Quando você executa a
pop()
função mesmo que a linha retorne o item pop-up, a matriz original é efetuada e o elemento pop-up é removido.fonte
Você pode fazer isso de duas maneiras usando
splice()
:arr.splice(-1,1)
arr.splice(arr.length-1,1)
splice(position_to_start_deleting, how_many_data_to_delete)
leva dois parâmetros.position_to_start_deleting
: O índice baseado em zero de onde começar a excluir.how_many_data_to_delete
: Do índice indicado, quantos dados consecutivos devem ser excluídos.Você também pode remover o último elemento usando
pop()
aspop()
remove o último elemento de alguma matriz.Usar
arr.pop()
fonte
arr.slice(-1)
retornará uma cópia do último elemento da matriz, mas deixa a matriz original não modificada.Para remover os últimos
n
elementos de uma matriz, usearr.splice(-n)
(observe o "p" em "emenda"). O valor de retorno será uma nova matriz que contém os elementos removidos.Mais simples ainda, para
n == 1
usarval = arr.pop()
fonte
// remove o último elemento // precisa verificar se arr.length> 0
fonte
fonte
emenda (índice, quantos) - Esta solução parece boa. Porém, este número funcionará apenas para o índice de matriz positivo. Para remover os últimos dois itens ou três itens, use o próprio índice.
Por exemplo, emenda (-2) para remover os dois últimos itens. emenda (-3) para remover os três últimos itens.
fonte
É importante notar que
slice
irá retornar tanto uma nova matriz, enquanto que.pop()
e.splice()
vai transformar a existente matriz.Se você gosta de lidar com coleções de dados com um estilo de comando encadeado, você realmente vai querer ficar com
slice
algo assim.Por exemplo:
Pode exigir muito mais confusão e gerenciamento de variáveis, para fazer o mesmo tipo de coisa com "pop", pois
map
, ao contrário defilter
, etc, você não recebe uma nova matriz de volta.É o mesmo tipo de coisa
push
que adiciona um item ao final de uma matriz. Você pode se sair melhor,concat
pois isso permite manter o fluxo.fonte
Com o Lodash, você pode usar o dropRight , se não quiser saber quais elementos foram removidos:
fonte
fonte
Solução ECMA5 de 2019:
Não destrutivo, genérico, de uma linha e requer apenas copiar e colar no final da sua matriz.
fonte
I would like to remove the last element
. Isso precisa de uma operação destrutiva / mutante na matriz original.diga que você tem
var arr = [1,0,2]
arr.splice(-1,1)
retornará para vocêarray [1,0];
enquantoarr.slice(-1,1)
retornará para vocêarray [2];
fonte
Esta é uma boa maneira de remover o último item:
Detalhe da emenda da seguinte forma:
emenda (startIndex, número de emenda)
fonte
A saída será: Matriz [0,1,2,3,4,5] . Isso permitirá que você mantenha a mesma quantidade de elementos da matriz ao inserir um novo valor.
fonte
Outra abordagem é filtrar com base no índice:
Nota:
filter()
cria uma nova matriz, não altera a existente.fonte
Se você deseja remover o item n do final da matriz em javascript, você pode facilmente usar:
fonte