Creé esta matriz 2D y estoy tratando de eliminar las filas que tienen 5 "unos" o más, lo probé con splice (a.splice(j,1)) pero no funciona. Creo que porque al usar este método cambia la cantidad total de filas y eso afecta los bucles for.
¿Es porque no uso el empalme correctamente o debería usar un método diferente?
Gracias !
a = Array(7).fill(0).map(x => Array(10).fill(0)) for (let i = 0; i < 5; i++) { a[1][i + 2] = 1; a[4][i + 2] = 1; a[5][i + 2] = 1; } console.log(a); let count = 0; for (let j = 0; j < 7; j++) { for (let i = 0; i < 10; i++) { if (a[j][i] == 1) { count = count + 1; } } if (count > 4) { console.log("Line" + j); // a.splice(j,1); } count = 0; // a.splice(j,1); }Su splice es correcto pero avanza a través de la matriz ( j se incrementa). Para realizar este tipo de operación, debe retroceder a través de la matriz ( j se decrementa); de esta manera, los índices cambiantes de la matriz no interfieren con su ciclo.
Vea el ejemplo a continuación:
a = Array(7).fill(0).map(x => Array(10).fill(0)) for (let i=0; i<5; i++) { a[1][i+2] = 1; a[4][i+2] = 1; a[5][i+2] = 1; } console.log("Original array"); console.log(a); for (let j = a.length - 1; j > 0; j--) { var count; for (let i = 0; i < a[j].length; i++) { if (a[j][i] === 1) { count += 1 } } if (count > 4) { a.splice(j, 1); } count = 0; } console.log("Filtered array"); console.log(a);