¿Cómo se puede registrar un elemento de un bucle anidado cada segundo durante al menos un minuto en Javascript?
let innerArrayOne = [1,"red","fed"]
let innerArrayTwo = [2,"blue","you"]
let innerArrayThree = [3,"green","bean"]
let innerArrayFour = [4,"yellow","fellow"]
let arrayS = [innerArrayOne,innerArrayTwo,innerArrayThree, innerArrayFour]
for(let i = 0; i < arrayS.length; i++){
console.log("----")
console.log(arrayS[i][0])
console.log("----")
for(let j = 1; j < arrayS[i].length;j++)
console.log(arrayS[i][j])
}
Aquí tienes lo que he intentado hasta ahora:
for(let i = 0; i < arrayS.length; i++){
console.log("----")
console.log(arrayS[i])
console.log("----")
for(let j = 0; j < arrayS[i].length;j++)
console.log(arrayS[i][j])
}
Aquí tienes los datos de prueba que he creado. Aquí tienes lo que he intentado hasta ahora. Esto te muestra cada elemento en el array.
function loop(count, callback, done) {
let counterForLoop = 0;
let next = function () {setTimeout(iteration, 500);};
let iteration = function () {
if (counterForLoop < count) { callback(counterForLoop, next);
} else { done && done();}
counterForLoop++;
}
iteration();
}
loop(10000, function (i, next) {next();})
loop(9, function (i, nextI) {
console.log("----")
console.log(i)
console.log("----")
loop(3, function (j, nextJ) {
console.log(arrayS[i][j]);nextJ();
}, nextI);});
Esto es de la única otra pregunta en StackOverflow a la que he consultado. Funciona, pero termina después del último elemento del primer array. No entiendo completamente la recursión, así que cada vez que he intentado editar, como configurar el contador a cero después de alcanzar 8, falla. Me gustaría que la salida fuera
1
red
fed
2
blue
you
....
Con un elemento saliendo cada segundo durante uno o dos minutos, y el bucle, una vez que llega al final, solo necesita repetirse.
¿Alguna idea o qué debo investigar?
davy.ai
Para lograr la salida deseada, puedes usar bucles anidados con setTimeout para imprimir un elemento a la vez en un intervalo especificado. Aquí está el código que puede lograr esto:
Este código utiliza la función
setInterval
para imprimir repetidamente un elemento a la vez del array dado con un retraso especificado. Utiliza dos contadoresi
yj
para realizar un seguimiento del elemento actual en el array anidado. Una vez que se imprimen todos los elementos del array interno, los contadores se mueven al siguiente array interno y continúan hasta que se imprimen todos los elementos. Luego, el bucle comienza de nuevo desde el principio.Para detener el bucle después de cierto tiempo, utilizamos la función
clearInterval
para eliminar el intervalo definido después del tiempo especificado (2 minutos en este ejemplo). Puedes ajustar el retraso y el tiempo según tus requisitos.