我有一種情況,至今我一直無法找到滿意的解決方案。以下是高層次的代碼。JavaScript內部循環中的延遲時間爲
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9],
o = {a:1, b:2, c:3, d:10, e:11, f:12, g:7, h:8, i:9};
function matched(i, j) {
return a[i]===o[j];
}
for (var i=0; i<a.length; ++i) {
for (var j in o) {
if (matched(i, j)) console.log(a[i]);
}
}
我有一個數組和一個對象。我循環訪問數組,然後是對象,通過函數matched()
查找匹配項,該函數返回布爾值true
或false
。如果條件是true
,那麼我記錄數組項目。如果您現在運行代碼(https://jsfiddle.net/thdoan/0tubbokj/),您應該看到數字1-3和7-9輸出到控制檯。
我想要做的是在每個數字之間輸出帶有一秒延遲的數字。我知道如何在每個循環迭代之間引入延遲,但我只想爲打印的數字添加延遲(即當matched()
返回true
時)。
澄清:我目前的解決方案,我不滿意,是將匹配的項目保存到一個單獨的數組,並在延遲迭代該數組,但我正在尋找一種解決方案,不需要創建一個新的數組。
您需要爲遞歸。使用遞歸函數更改循環for()。如果你不能,你可以'setTimeout(function(){console.log(result);},1000);'但它不好。 –
@MarcosPérezGude可以在小提琴或codepen中演示您的解決方案,因爲我無法使其工作。謝謝。 – 10basetom
我的建議等於TJCrowder的答案。 –