Neste artigo exibiremos algumas formas de como remover um ou mais itens do Array
Slice
Retorna uma cópia de uma parte do array em um novo array. Pode ser usado para excluir um item específico se você especificar o índice inicial e final desejados.
let arr = [1, 2, 3, 4]; arr = arr.slice(0, 2).concat(arr.slice(3)); console.log(arr); // Output: [1, 2, 4]
Splice
Altera o array original removendo itens específicos e/ou adicionando novos itens.
let arr = [1, 2, 3, 4]; arr.splice(2, 1); console.log(arr); // Output: [1, 2, 4]
Filter
Retorna um novo array com todos os elementos que passam no teste implementado pela função fornecida.
let arr = [1, 2, 3, 4]; arr = arr.filter(item => item !== 3); console.log(arr); // Output: [1, 2, 4]
indexOf
Retorna o primeiro índice do valor especificado, caso ele exista no array. Pode ser usado para verificar se um item existe no array antes de excluí-lo com splice().
let arr = [1, 2, 3, 4]; let index = arr.indexOf(3); if (index > -1) { arr.splice(index, 1); } console.log(arr); // Output: [1, 2, 4]
Agora exibiremos algumas possibilidades de funções úteis para uso
Uma função genérica que remove um item específico de um array em JavaScript:
function removeItem(array, item) { let index = array.indexOf(item); if (index !== -1) { array.splice(index, 1); } return array; } let arr = [1, 2, 3, 4]; arr = removeItem(arr, 3); console.log(arr); // Output: [1, 2, 4]
A função removeItem
aceita dois argumentos: o primeiro é o array e o segundo é o item a ser removido. Em seguida, a função usa o método indexOf
para verificar se o item existe no array. Se existir, o método splice
é usado para remover o item. Finalmente, o array modificado é retornado.
Uma variação da função acima, porém com a possibilidade de remover o item do início, ou do fim do array:
function removeItem(array, item, removeFromEnd) { let index; if (removeFromEnd) { index = array.lastIndexOf(item); } else { index = array.indexOf(item); } if (index !== -1) { array.splice(index, 1); } return array; } let arr = [1, 2, 3, 4, 3]; arr = removeItem(arr, 3, true); console.log(arr); // Output: [1, 2, 4, 3] arr = removeItem(arr, 3, false); console.log(arr); // Output: [2, 4, 3]
A função agora aceita um terceiro argumento opcional, removeFromEnd
, que indica se o item deve ser removido do final (true
) ou do início (false
) do array. Se removeFromEnd
for true
, a função usa o método lastIndexOf
para encontrar o índice do item a ser removido. Caso contrário, a função usa o método indexOf
como antes. O item é removido usando o método splice
da mesma maneira.
removeItem
que permite remover um ou mais itens do início ou do final do array:function removeItens(array, itens, removeFromEnd) { let indices = []; for (let i = 0; i < itens.length; i++) { let item = itens[i]; let index; if (removeFromEnd) { index = array.lastIndexOf(item); } else { index = array.indexOf(item); } while (index !== -1) { indices.push(index); if (removeFromEnd) { index = array.lastIndexOf(item, index - 1); } else { index = array.indexOf(item, index + 1); } } } for (let i = indices.length - 1; i >= 0; i--) { array.splice(indices[i], 1); } return array; } let arr = [1, 2, 3, 4, 3]; arr = removeItens(arr, [3], true); console.log(arr); // Output: [1, 2, 4] arr = removeItens(arr, [4, 2], false); console.log(arr); // Output: [1]
A função agora aceita um segundo argumento, itens
, que é um array de itens a serem removidos. O terceiro argumento removeFromEnd
ainda indica se os itens devem ser removidos do final (true
) ou do início (false
) do array. A função usa um loop para percorrer o array itens
e encontrar todas as ocorrências de cada item. Em seguida, um segundo loop é usado para remover os itens usando o método splice
, começando pelo último índice para preservar os índices corretos. Finalmente, o array modificado é retornado.
Em detalhes a última função
A função removeItens
remove um ou mais itens de um array em JavaScript. A função tem três argumentos: o primeiro é o array que deseja-se modificar, o segundo é um array de itens a serem removidos e o terceiro é uma flag booleana que indica se os itens devem ser removidos do início (false
) ou do final (true
) do array.
A função começa definindo uma variável vazia indices
que armazenará todos os índices dos itens que serão removidos. Em seguida, o primeiro loop percorre o array de itens a serem removidos. Dentro do loop, a função usa o método indexOf
ou lastIndexOf
para encontrar o primeiro ou último índice, respectivamente, do item atual no array de origem.
O segundo loop interno, chamado while
, é usado para encontrar todas as ocorrências do item atual no array de origem. Se o item for encontrado, o índice é adicionado à variável indices
e a busca é continuada a partir do próximo índice (usando indexOf
) ou do índice anterior (usando lastIndexOf
).
Após o primeiro loop, todos os índices dos itens a serem removidos foram adicionados à variável indices
. O terceiro loop é usado para remover os itens do array, começando pelo último índice. Isso é feito para preservar os índices corretos, já que remover um item muda a posição dos itens subsequentes no array.
Finalmente, a função retorna o array modificado.