martes, 25 de junio de 2013

JavaScript: Borrar elementos de un array

El operador 'delete' no borra el elemento

Si utilizamos delete con un elemento de un array:

var myArray = ["A","B","C"];
delete myArray[1];  // myArray -> ["A", undefined, "C"]

El elemento no se borra del array. Sería más exacto decir que el elemento concreto se borra (queda como undefined), pero el array no se re-indexa. Sigue teniendo los mismos indices y el mismo número de elementos.

Utiliza splice()

Para eliminar el elemento debemos utilizar el método splice() que tienen todos los arrays:

myArray.splice(index, count);

index es el índice que queremos borrar y count es el número de elementos a borrar.

var myArray = ["A","B","C"];
myArray.splice(1,1);  // myArray -> ["A", "C"]

Hemos eliminado el elemento que tenía índice 1.

No confundir con slice()

El método slice() es similar pero no modifica el array sobre el que se aplica, sino que devuelve los elementos 'extraidos':

myArray.slice(start, end);

start es el índice en el que empezamos y end el índice hasta el que 'extraemos' elementos. El elemento en la posición end no estará incluido.

var myArray = ["A","B","C"];
var result  = myArray.slice(1,2);  // myArray -> ["A", "B", "C"]
                                   // result  -> ["B"]

El array original no se modifica pero se devuelven los elementos desde el 1 hasta el 2 (no incluido).

Resumen

  • delete myArray[1] -> ["A", undefined, "C"]
  • myArray.splice(1,1) -> ["A", "C"]
  • myArray.slice(1,2) no modifica el array pero devuelve ["B"]

2 comentarios: