Estoy tratando de hacer una función removeAll()
, que eliminará todos los elementos de una matriz con ese valor particular (no índice).Cómo eliminar varios elementos de una matriz por valor?
La parte difícil viene cuando realizamos cualquier cambio en el ciclo, los índices tienden a moverse (lo que hace que sea muy difícil hacerlo funcionar como queremos) y reiniciar el ciclo cada vez que hacemos cambios es muy ineficiente en grandes arreglos
Hasta el momento, escribí mi propia arr.indexOf
función (por mayor soporte IE), que se ve así:
function arrFind(val, arr) {
for (var i = 0, len = arr.length, rtn = -1; i < len; i++) {
if (arr[i] === val) {
return i;
}
}
return -1;
}
Es fácil de eliminar elementos como este:
var myarray = [0, 1, 2, 3, 4];
var tofind = 2;
var stored_index = arrFind(tofind, myarray);
if (stored_index != -1) {
myarray.splice(stored_index, 1);
}
alert(myarray.join(",")); //0,1,3,4
Sin embargo, como señalé anteriormente, al hacer esto mientras bucleo, nos metimos en problemas.
¿Alguna idea sobre cómo eliminar correctamente los elementos de la matriz al recorrerlos?
[encontraron esta pregunta relacionada] (http://stackoverflow.com/q/3954438/908879) (pero es _No_ un DUP porque mi pregunta es sobre problem_ _a al retirar _múltiples_ artículos _Inside un loop_) – ajax333221