假设我有以下输出整数的基本循环:
for (var i = 0; i < 6; i++) {
echo i;
}
/* Output: 0 1 2 3 4 5 */是否可以使用一个简单的变量flag将其输出“翻转”为5 4 3 2 1 0,该变量的值只能是1或-1,而不使用if/else
主要是在JavaScript中寻找答案,但这应该是一个与语言无关的问题。
发布于 2012-12-24 23:46:21
您可以将起点计算为5 * (1 - flag) / 2。您可以以类似的方式计算一个值,以便在条件中使用作为结束点,但更容易的是始终循环相同的值,并从循环变量计算实际值:
start = 5 * (1 - flag) / 2;
for (var i = 0; i < 6; i++) {
echo start + i * flag;
}发布于 2012-12-24 23:49:38
您需要知道范围N,因为您无法知道如何映射0 -> 5
echo ((flag-1)/2)*(-N+1) + (flag*i) 发布于 2012-12-24 23:43:23
使用三元运算符(使用标志为true或false):
var max_number = 5;
var min_number = 0;
var flag = true;
for(var i = (flag ? min_number : max_number);
(flag ? i < max_number : i > min_number);
(flag ? ++i : --i)){
console.log(i);
}演示:http://jsfiddle.net/maniator/b26T8/
https://stackoverflow.com/questions/14023168
复制相似问题