簡體   English   中英

將for循環條件分配給變量

[英]Assign for-loop condition to a variable

有沒有辦法在Javascript中的for循環中將變量指定為條件運算符?

例如,將此for循環:

for(var i = 0, j = 5; i < 10; i++, j++) {
    console.log(i + ", " + j);
}

我希望能夠將i < 10部分設置為變量。 我可能希望for循環運行直到j < 8而不是i < 10 我目前正在這樣做的方式是使用if語句,然后使用兩個不同的for循環和完全相同的代碼,除了條件,我只想知道是否有更高效的方法。 謝謝!

在for循環中使用一個函數並將其重新分配給您想要的任何內容。

var predicate = function(i, j) { return i < 10; }

for(var i = 0, j = 5; predicate(i, j); i++, j++) {
    console.log(i + ", " + j);
    if (i === 5) { // Dummy condition
        predicate = function(i, j) { return j < 8; };
    }
}

優點是,如果需要,您可以完全更改邏輯。

您可以用變量替換10 您不能用變量替換運算符< )。

您可以使用函數替換整個表達式,並且該函數可以存儲在變量中。

var data = ["a", "b", "c"];

function loop(callback) {
    for (var i = 0; callback(i); i++) {
        console.log(data[i]);
    }
}

loop(function (i) {
    return (i < 10);
});

loop(function (i) {
    return (i < 8);
});

當然,你是否試着在那里插入變量:

var total = true==true ? 8 : 10,
    i     = 0,
    j     = 5,
    what  = true==false ? i : j;

for(; what < total; i++, j++) {
    console.log(i + ", " + j);
}

你可以為此創建一個隨機函數?

function countdown = (function(){
   var i =0, j = 5;
   return function(){
       ++i; ++j;
       return i < 10; // or j < 8
   }
})();

while(countdown()) {
    console.log('counting');
}

唯一的問題是你不能在你的循環范圍內訪問ij

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM