361 votos

¿Cómo eliminar un elemento de una matriz en JavaScript?

var arr = [1,2,3,5,6];

Eliminar el primer elemento

Quiero eliminar el primer elemento del Array para que se convierta en:

var arr = [2,3,5,6];

Eliminar el segundo elemento

Para ampliar esta pregunta, ¿qué pasa si quiero eliminar el segundo elemento del Array para que se convierta en:

var arr = [1,3,5,6];

2 votos

slice(start, end) no 'como_muchos_para_eliminar'

2 votos

@Ped arr.unshift() no elimina, sino que "añade uno o más elementos al principio de una matriz"

0 votos

@seanjacob es splice no slice Supongo que sí.

677voto

Joseph Silvashy Puntos 14960

shift() es ideal para su situación. shift() elimina el primer elemento de un Array y devuelve ese elemento. Este método cambia la longitud del Array.

array = [1, 2, 3, 4, 5];

array.shift(); // 1

array // [2, 3, 4, 5]

0 votos

Esto funciona, pero sólo eliminará el primer elemento de la matriz.

54 votos

@Gabriel: ¿no era exactamente esa la pregunta? Yo prefiero shift() a splice(..., ...) ya que es mucho más explícito, directo.

6 votos

Corrección: Devuelve el primer elemento, no un nuevo Array menos el primer elemento, según el enlace que proporcionaste :)

366voto

Gabriel McAdams Puntos 22323

Para una solución más flexible, utilice el splice() función. Permite eliminar cualquier elemento de un Array basándose en el valor del índice:

var indexToRemove = 0;
var numberToRemove = 1;

arr.splice(indexToRemove, numberToRemove);

12 votos

Y la siguiente pregunta: arr.splice(1,1) para el segundo elemento.

1 votos

Prefiero splice() en shift() porque es más flexible. Puede que quiera hacer algo diferente en el futuro, y no siempre quiero eliminar sólo un elemento, o incluso el primer elemento.

14 votos

Si llegas aquí desde Google: Gabriel prefiere esta respuesta, pero debes saber que también existe shift(), ver la respuesta de Joseph.

60voto

Ped Puntos 1981

El Array.prototype.shift elimina el primer elemento de un Array, y lo devuelve. Modifica el Array original.

var a = [1,2,3]
// [1,2,3]
a.shift()
// 1
a
//[2,3]

4 votos

Una gran mejora respecto a la respuesta de Joseph Silvashy: no hay incoherencias entre la descripción y el código.

53voto

kiuma Puntos 76
arr.slice(begin[,end])

no es destructivo, empalmar y desplazar modificará su Array original

4 votos

Sí, para no mutar. Esto debería ser más visible.

15voto

Anurag Puntos 66470

Escribí un pequeño artículo sobre la inserción y eliminación de elementos en posiciones arbitrarias en Arrays de Javascript.

Aquí está el pequeño fragmento para eliminar un elemento de cualquier posición. Esto extiende la clase Array en Javascript y añade el método remove(index).

// Remove element at the given index
Array.prototype.remove = function(index) {
    this.splice(index, 1);
}

Así que para eliminar el primer elemento de tu ejemplo, llama a arr.remove():

var arr = [1,2,3,5,6];
arr.remove(0);

Para eliminar el segundo elemento,

arr.remove(1);

Aquí hay un pequeño artículo con métodos de inserción y eliminación para la clase Array.

Esencialmente esto no es diferente de las otras respuestas que utilizan el empalme, pero el nombre splice no es intuitivo, y si tienes esa llamada en toda tu aplicación, sólo hace que el código sea más difícil de leer.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X