有没有办法在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
循环和完全相同的代码,条件除外,我只是想知道是否有更有效的方法可行。谢谢!
答案 0 :(得分:4)
使用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; };
}
}
优点是,如果需要,您可以完全更改逻辑。
答案 1 :(得分:2)
您可以使用变量替换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);
});
答案 2 :(得分:1)
当然,你是否只是试着在那里插入变量:
var total = true==true ? 8 : 10,
i = 0,
j = 5,
what = true==false ? i : j;
for(; what < total; i++, j++) {
console.log(i + ", " + j);
}
答案 3 :(得分:0)
我猜你可以为此创建一个随机函数吗?
function countdown = (function(){
var i =0, j = 5;
return function(){
++i; ++j;
return i < 10; // or j < 8
}
})();
while(countdown()) {
console.log('counting');
}
唯一的问题是您无法在循环范围内访问i
和j
。