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 < arrayOfDoom.length; i ){
console.log("----")
console.log(arrayOfDoom[i])
console.log("----")
for(let j = 0; j < arrayOfDoom[i].length;j )
console.log(arrayOfDoom[i][j])
}
}
這是我制作的測驗資料。這是我迄今為止嘗試過的。這為您提供了陣列中的每個元素。
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);});
這是我檢查過的唯一其他關閉的 StackOverflow。它有效,但它在第一個陣列中的最后一個元素之后結束。我不完全理解遞回,所以每次我嘗試編輯時,比如在達到 8 后將計數器設定為零,它會破壞它。我希望輸出是
1
red
fed
2
blue
you
....
一個元素出來,每秒一到兩分鐘,回圈一旦結束,它只需要重復。
任何想法或我應該研究什么?
uj5u.com熱心網友回復:
對于所有未來的兄弟們,這就是我讓它作業的方式
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
let i = 0;
let loopCounter = 0;
let randomNumber = 1
const outerLoop = () => {
for (i; i < arrayS.length;){
console.log(randomNumber);
console.log(arrayS[randomNumber][loopCounter])
i ;
loopCounter ;
if(loopCounter === 3){
loopCounter = 0
randomNumber = getRandomInt(8)
}
if(i === 4){
i = 0
}
break;
}
}
setInterval(outerLoop, 2000);
uj5u.com熱心網友回復:
未來的朋友還應該考慮將問題分成兩部分:(1)在固定時間間隔內做任何事情,以及(2)隨機記錄。
setInterval可以提供的一點修飾可以隱藏時間數學并在指定的經過時間后停止。
隨機記錄也可以通過改組,然后按順序記錄來改進,以獲得不重復的隨機性。
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];
// fisher-yates shuffle, thanks to https://stackoverflow.com/a/2450976/294949
function shuffle(array) {
let currentIndex = array.length, randomIndex;
while (currentIndex != 0) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]];
}
return array;
}
// invoke fn on a set interval until elapsed ms have elapsed
function repeat(fn, interval, elapsed) {
fn() // up to author if we start right away
const start = (new Date()).getTime(); // ms since epoch
const id = setInterval(() => {
const now = (new Date()).getTime();
if (now - start > elapsed) {
clearInterval(id);
} else {
fn()
}
}, interval);
}
let shuffledArray = shuffle(arrayS.slice());
let index = 0;
repeat(() => {
console.log(shuffledArray[index])
if (index < shuffledArray.length-1) index ;
else {
shuffledArray = shuffle(arrayS.slice());
index = 0;
}
}, 800, 4800)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/384857.html
標籤:javascript 数组 嵌套 设置超时 设置间隔
