Eu tenho:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Eu quero ser capaz de fazer algo como:
array.remove("B");
mas não há função de remoção. Como eu faço isso?
Eu tenho:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Eu quero ser capaz de fazer algo como:
array.remove("B");
mas não há função de remoção. Como eu faço isso?
Respostas:
Na verdade, estou atualizando esse segmento com uma solução de 1 linha mais recente:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
A idéia é basicamente filtrar a matriz, selecionando todos os elementos diferentes do elemento que você deseja remover.
Nota: removerá todas as ocorrências.
EDITAR:
Se você deseja remover apenas a primeira ocorrência:
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
Percorra a lista na ordem inversa e use o .splice
método
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
A ordem inversa é importante quando todas as ocorrências do termo de pesquisa precisam ser removidas. Caso contrário, o contador aumentará e você pulará elementos.
Quando apenas a primeira ocorrência tiver que ser removida, o seguinte também funcionará:
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
0
não é automaticamente mais rápida como é, digamos, C. Contanto que você armazene em cache o limite, é claro, o que complicaria as coisas se você continuar após a primeira partida (mas não se parar).
Lista de um forros
Vamos resolver este problema para esta matriz:
var array = ['A', 'B', 'C'];
1. Remova apenas o primeiro: Use Se você tiver certeza de que o item existe
array.splice(array.indexOf('B'), 1);
2. Remova apenas o último: Use Se você tiver certeza de que o item existe
array.splice(array.lastIndexOf('B'), 1);
3. Remova todas as ocorrências:
array = array.filter(v => v !== 'B');
Você precisa encontrar o local do que está procurando .indexOf()
e removê-lo com.splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
Isso cuidará de todas as ocorrências.
.indexOf()
você pode adicioná- lo ao seu arquivo javascript.
Uncaught ReferenceError: array is not defined
. O que está errado?
.indexOf()
um pouco mais. Se você passar found
como o segundo argumento para a .indexOf()
chamada dentro do laço while , os elementos na matriz que já foram verificados e acabou não sendo iguais não são verificados novamente: found = arr.indexOf(what, found);
Simplesmente
array.splice(array.indexOf(item), 1);
-1
se nada for encontrado e oops, splice excluirá 1 elemento do final da matriz
Solução simples (ES6)
Se você não possui elemento duplicado
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
Você tem que escrever o seu próprio remover. Você pode percorrer a matriz, pegar o índice do item que deseja remover e usá splice
-lo para removê-lo.
Como alternativa, você pode criar uma nova matriz, fazer um loop sobre a matriz atual e, se o objeto atual não corresponder ao que você deseja remover, coloque-o em uma nova matriz.
usar:
array.splice(2, 1);
Isso remove um item da matriz, iniciando no índice 2 (terceiro item)
array.splice(2,1)
que remove 1 item no índice 2 da matriz. verifique https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/splice para obter mais detalhes
use array.splice
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
Fonte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
array
e splice
deve ser um ponto.
.indexOf()
e.splice()
deve fazer o truque. Ou talvez, alternativamente.filter()
,.