Quiero mover los ceros de la matriz al final de la matriz, como
zeroesToEnd([1, 2, 0, 0, 4, 0, 5])[1, 2, 4, 5, 0, 0, 0]
he intentado esto
console.log(zeroesToEnd([1, 2, 0, 0, 4, 0, 5])) function zeroesToEnd(a) { let counter=0; let concatarr=[]; for(let i=0; i <= a.length;i++){ if(a[i]===0){ concatarr.push(0); counter++ } } return a.concat(concatarr) }Creo que usar el método de filter satisface su pregunta, sin embargo, con el espíritu de mantener la respuesta en línea con su intento, quería incluir una respuesta usando bucles for.
En mi respuesta, inicializo una variable para realizar un seguimiento de la cantidad de ceros que hay en la primera matriz. Luego, inicializo una nueva matriz que contendrá los resultados deseados.
Tengo uno para recorrer en bucle los elementos de la matriz pasados a la función, y si es cero, aumento el conteo; de lo contrario, agrego el elemento a newArray. Luego, tengo otro bucle for que ejecuta la cantidad de veces que contamos los ceros y agrega un cero al final de newArray.
Tenga en cuenta que esto no muta la matriz original, pero produce una nueva matriz.
function zeroesToEnd(a) { let countOfZeros = 0; const newArray = []; for (const item of a) { if (item === 0) countOfZeros++; else newArray.push(item); } for (let i = 0; i < countOfZeros; i++) { newArray.push(0); } return newArray; } console.log(zeroesToEnd([1, 2, 0, 0, 4, 0, 5]));