Cómo eliminar un elemento de una matriz en JavaScript

JavaScript ofrece muchas formas de eliminar un elemento de una matriz. Aprenda la forma canónica y también descubra todas las opciones que tiene, usando JavaScript simple

Aquí hay algunas formas deeliminar un elemento de una matriz usando JavaScript.

Todo el método descritono mutes la matriz originaly, en su lugar, cree uno nuevo.

Si conoce el índice de un artículo

Suponga que tiene una matriz y desea eliminar un elemento en posicióni.

Un método es usarslice():

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const i = 2
const filteredItems = items.slice(0, i).concat(items.slice(i + 1, items.length))
// ["a", "b", "d", "e", "f"]

slice()crea una nueva matriz con los índices que recibe. Creamos una nueva matriz, desde el principio hasta el índice que queremos eliminar, y concatenamos otra matriz desde la primera posición que sigue a la que eliminamos hasta el final de la matriz.

Si conoces el valor

En este caso, una buena opción es utilizarfilter(), que ofrece una mayordeclarativoAcercarse:

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const valueToRemove = 'c'
const filteredItems = items.filter(item => item !== valueToRemove)
// ["a", "b", "d", "e", "f"]

Utiliza las funciones de flecha de ES6. Puede utilizar las funciones tradicionales para admitir navegadores más antiguos:

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const valueToRemove = 'c'
const filteredItems = items.filter(function(item) {
  return item !== valueToRemove
})
// ["a", "b", "d", "e", "f"]

o puede usar Babel y transpilar el código ES6 de nuevo a ES5 para hacerlo más digerible para los navegadores antiguos, pero escribir JavaScript moderno en su código.

Eliminar varios elementos

¿Qué sucede si en lugar de un solo elemento, desea eliminar muchos elementos?

Busquemos la solución más simple.

Por índice

Puede simplemente crear una función y eliminar elementos en serie:

const items = ['a', 'b', 'c', 'd', 'e', 'f']

const removeItem = (items, i) => items.slice(0, i-1).concat(items.slice(i, items.length))

let filteredItems = removeItem(items, 3) filteredItems = removeItem(filteredItems, 5) //[“a”, “b”, “d”, “e”]

Por valor

Puede buscar la inclusión dentro de la función de devolución de llamada:

const items = ['a', 'b', 'c', 'd', 'e', 'f']
const valuesToRemove = ['c', 'd']
const filteredItems = items.filter(item => !valuesToRemove.includes(item))
// ["a", "b", "e", "f"]

Evite mutar la matriz original

splice()(no confundir conslice()) muta la matriz original y debe evitarse.


Más tutoriales de js: