Quiero producir la Secuencia de Collatz para todos los números del 1 al 10 y todas las secuencias producidas se almacenan en una matriz llamada innerArr que debería cambiar en cada bucle. Y todas esas matrices modificadas se almacenarán en outsideArr (es decir, matriz de matrices). Pero:
1. Dado que el bucle for no se incrementa (o decrementa) cuando existe un bucle while dentro de este bucle for.
2. Dado que el ciclo while funciona solo cuando no hay un ciclo for que lo cubra y n = (cualquier número).
let n,outerArr = []; for (n = 1; n < 10; n++) { let innerArr = [], i = 0; innerArr.push(n); while (n !== 1) { if (n % 2 == 0) { n = n / 2; innerArr.push(n); } else { n = (3 * n) + 1; innerArr.push(n); } i++; } outerArr.push(innerArr); } console.log(outerArr)El problema es que su ciclo for, que intenta contar n de 1 a 9, nunca se ejecutará hasta el final, porque n siempre se restablece a 1 en el ciclo while. Por lo tanto debes separar las variables que cuentan del 1 al 9, y la variable que se modifica en el ciclo while.
Además, si realmente desea cubrir los números del 1 al 10 como dice en su pregunta, recuerde usar <= 10 .
let n,outerArr = []; for (m = 1; m <= 10; m++) { let n = m; let innerArr = [], i = 0; innerArr.push(n); while (n !== 1) { if (n % 2 == 0) { n = n / 2; innerArr.push(n); } else { n = (3 * n) + 1; innerArr.push(n); } i++; } outerArr.push(innerArr); } console.log(outerArr)