Las matrices Javascript le permiten agrupar Valores e iterar sobre ellos. Puede agregar y eliminar elementos de matriz de diferentes maneras. Desafortunadamente no hay una Matriz simple.método de eliminación.
entonces, ¿cómo se elimina un elemento de una matriz JavaScript?,
en lugar de un método delete, la matriz JavaScript tiene una variedad de formas en las que puede limpiar los valores de la matriz.
Puede eliminar elementos del final de una matriz usando pop, desde el principio usando shift, o desde el medio usando splice. El método JavaScript Array filter para crear una nueva matriz con los elementos deseados, una forma más avanzada de eliminar elementos no deseados.,eliminar lícitamente elementos de matriz utilizando el operador eliminar
existen diferentes métodos y técnicas que puede utilizar para eliminar elementos de matrices JavaScript:
- pop – elimina del final de una matriz
- shift – elimina del principio de una matriz
- splice – elimina de una matriz específica index
- filter – le permite eliminar un array
también aprenderá algunas otras formas en que puede eliminar elementos de un array que pueden no ser tan obvios, como con lodash.,
eliminar elementos del final de una matriz JavaScript
Los elementos de la matriz JavaScript se pueden eliminar del final de una matriz estableciendo la propiedad length en un valor menor que el Valor Actual. Se eliminará cualquier elemento cuyo índice sea mayor o igual a la nueva longitud.
var ar = ; ar.length = 4; // set length to remove elements console.log( ar ); //
el método pop elimina el último elemento de la matriz, devuelve ese elemento y actualiza la propiedad length. El método pop modifica la matriz en la que se invoca, esto significa que, a diferencia de usar delete, el último elemento se elimina por completo y la longitud de la matriz se reduce.,
var ar = ; ar.pop(); // returns 6 console.log( ar ); //
eliminar elementos del principio de una matriz JavaScript
¿Cómo se elimina el primer elemento de una matriz JavaScript?
el método shift funciona como el método pop, excepto que elimina el primer elemento de una matriz JavaScript en lugar del último.
no hay parámetros ya que el método shift solo eliminó el primer elemento array. Cuando se elimina el elemento, los elementos restantes se desplazan hacia abajo.,
var ar = ; ar.shift(); // returns "zero" console.log( ar ); //
el método shift devuelve el elemento que se ha eliminado, actualiza los índices de los elementos restantes y actualiza la propiedad length. Modifica la matriz en la que se invoca.
si no hay elementos, o la longitud del array es 0, el método devuelve undefined.
usando Splice para eliminar elementos de matriz en JavaScript
el método splice se puede usar para agregar o eliminar elementos de una matriz. El primer argumento especifica la ubicación en la que comenzar a agregar o eliminar elementos. El segundo argumento especifica el número de elementos a eliminar., El tercer argumento y los siguientes son opcionales; especifican los elementos que se agregarán al array.
Aquí usamos el método splice para eliminar dos elementos a partir de la posición tres (índice basado en cero):
var arr = ; var removed = arr.splice(2,2);
El método splice devuelve una matriz que contiene los elementos eliminados. Puede ver que la matriz eliminada contiene y la matriz original contiene los valores restantes.
el método splice también se puede utilizar para eliminar un rango de elementos de una matriz.,
var list = ; list.splice(0, 2); // Starting at index position 0, remove two elements and retains .
eliminar elementos de matriz por valor usando Splice
Si conoce el valor que desea eliminar de una matriz, puede usar el método splice. Primero debe identificar el índice del elemento de destino. A continuación, utilice el índice como elemento de inicio y elimine solo un elemento.
var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); } } //=>
Este es un ejemplo simple donde los elementos son enteros. Si tienes una variedad de objetos, necesitarás una rutina más sofisticada.
esto funciona si solo desea eliminar un solo elemento., Si desea eliminar varios elementos que coincidan con sus criterios, hay un error.
a medida que los elementos se eliminan de la matriz, el índice sigue aumentando y el siguiente elemento después de su valor coincidente se omite.
la solución simple es modificar el ejemplo anterior para decrementar la variable índice para que no omita el siguiente elemento en la matriz.
var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); i--; } } //=>
en el ejemplo modificado agregué 2 5 valores adicionales a la matriz. También agregué ‘i;;’ después de la llamada de empalme.
ahora, cuando ejecute el bucle, eliminará todos los elementos coincidentes.,
Gracias a Kristian Sletten por señalar el problema con el bucle omitiendo el siguiente elemento.
usando el método Array filter para eliminar elementos por valor
a diferencia del método splice, filter crea una nueva matriz. filter () no muta la matriz en la que se llama, pero devuelve una nueva matriz.
filter() tiene un único parámetro, un método de devolución de llamada. La devolución de llamada se activa a medida que el método filter itera a través de los elementos de la matriz. Pasará tres valores a la devolución de llamada: el valor o elemento actual, el índice de matriz actual y la matriz completa.,
el método de devolución de llamada debe devolver true o false. Es su responsabilidad probar el valor (elemento) para ver si cumple con sus criterios. Si lo hace, puede devolver true. Los elementos que devuelven true se añaden a la nueva matriz filtrada.
var array = ; var filtered = array.filter(function(value, index, arr){ return value > 5; }); //filtered => //array =>
debe tener en cuenta que se devuelve un nuevo array que contiene valores coincidentes. La matriz original se deja intacta. Encuentro esto útil porque a menudo quiero conservar una fuente de datos original, pero recuperar subconjuntos basados en diferentes conjuntos de lógica.,
El método Lodash Array Remove
a veces las bibliotecas de utilidades son la mejor manera de resolver problemas más complejos. Lodash proporciona un rico conjunto de métodos de manipulación de matrices, uno de los cuales es remove.
El método Lodash remove funciona de manera muy similar al método array filter, pero en cierto modo al revés. No guarda los valores originales de la matriz, pero elimina los elementos coincidentes. Devuelve los elementos coincidentes como una nueva matriz.
var array = ;var evens = _.remove(array, function(n) { return n % 2 === 0;});console.log(array);// => console.log(evens);// =>
hacer un método de eliminación
Como mencioné anteriormente, no hay una matriz nativa.método de eliminación., Lodash lodash es el método que resuelve este problema, pero es posible que no siempre quieras usar Lodash. Esto no significa que no pueda crear un método de utilidad. John Resig nos dio un modelo a seguir, sin embargo amplió el prototipo de matriz, lo cual es una mala idea.
en su lugar, creé un método de utilidad de eliminación de matriz que se puede agregar a una biblioteca de ayuda o utilidad. Al igual que el método Lodash remove, el primer parámetro es la matriz de destino. Utiliza Array.filtrar para devolver elementos que no coincidan con un valor.
Este método es simple, asume valores simples como números o cadenas., Podría modificar este método para usar un método de comparación personalizado, pero creo que sería más fácil usar el método de filtro directamente.
eliminar explícitamente elementos de matriz usando el operador Delete
puede eliminar elementos de matriz específicos usando el operador delete:
var ar = ; delete ar; // delete element with index 4 console.log( ar ); // alert( ar ); // 1,2,3,4,,6
usar el operador delete no afecta la propiedad length. Tampoco afecta a los índices de los elementos posteriores. La matriz se vuelve dispersa, que es una forma elegante de decir que el elemento eliminado no se elimina, sino que se vuelve indefinido. Compare usando delete con el método de empalme que se describe a continuación.,
el operador delete está diseñado para eliminar propiedades de los objetos JavaScript, que son objetos.
la razón por la que el elemento no se elimina realmente de la matriz es que el operador delete se trata más de liberar memoria que de eliminar un elemento. La memoria se libera cuando no hay más referencias al valor.
borrar o restablecer una matriz JavaScript
¿Qué pasa si desea vaciar una matriz completa y simplemente volcar todos sus elementos?
hay un par de técnicas que puede utilizar para crear una matriz vacía o Nueva.,
la técnica más simple y rápida es establecer una variable de matriz en una matriz vacía:
var ar = ;//do stuffar = ;//a new, empty array!
el problema que esto puede crear es cuando tiene referencias a la variable. Las referencias a esta variable no cambiarán, todavía mantendrán los valores de la matriz original. Esto, por supuesto, puede crear un error🐛.
Este es un ejemplo simplificado de este escenario:
var arr1 = ;var arr2 = arr1; // Reference arr1 by another variable arr1 = ; console.log(arr2); // Output
un truco simple para borrar una matriz es establecer su propiedad length en 0.,
var ar = ;console.log(ar); // Output ar.length = 0;console.log(ar); // Output
otra técnica, una especie de técnica antinatural, es usar el método de empalme, pasando la longitud de la matriz como el segundo parámetro. Esto devolverá una copia de los elementos originales, que puede ser útil para su escenario.
var ar = ;console.log(ar); // Output ar.splice(0, ar.length);console.log(ar); // Output
Las dos últimas técnicas no crean un nuevo array, sino que cambian los elementos del array. Esto significa que las referencias también deben actualizarse.
hay otra manera, usando un bucle while. Se siente un poco extraño para mí, pero al mismo tiempo se ve elegante, por lo que puede impresionar a algunos amigos!,
var ar = ;console.log(ar); // Output while (ar.length) { ar.pop(); }console.log(ar); // Output
no es una forma de borrar una matriz de JavaScript, pero funciona y es legible. Algunas pruebas de rendimiento también han demostrado que esta es la técnica más rápida, así que tal vez es mejor de lo que pensé originalmente!
resumen
eliminar elementos de matriz JavaScript es importante para administrar sus datos. No hay un solo método’ remove ‘ disponible, pero hay diferentes métodos y técnicas que puede usar para purgar elementos de matriz no deseados.
Este artículo ha revisado estos métodos y cómo se pueden usar., También vio cómo crear un método de ayuda que hace que la eliminación de elementos de una matriz sea un poco más fácil y consistente.
Gracias a Rob Sherwood por señalar algunos errores sintácticos!