1

假设我有以下输出整数的基本循环:

for (var i = 0; i < 6; i++) {
    echo i;
}

/* Output: 0 1 2 3 4 5 */

是否可以将其输出“翻转”为5 4 3 2 1 0使用一个简单的变量flag,其值只能是1or -1,而不使用if/else

主要是在 JavaScript 中寻找答案,但这应该是一个与语言无关的问题。

4

3 回答 3

7

您可以将起点计算为5 * (1 - flag) / 2。您可以以类似的方式计算一个值以用于结束点的条件,但始终循环相同并从循环变量计算实际值更容易:

start = 5 * (1 - flag) / 2;
for (var i = 0; i < 6; i++) {
  echo start + i * flag;
}
于 2012-12-24T15:46:20.990 回答
2

您需要知道范围 N,因为您无法知道如何映射 0 -> 5

echo ((flag-1)/2)*(-N+1) + (flag*i) 
于 2012-12-24T15:49:38.097 回答
-4

使用三元运算符(使用标志为真或假):

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/

于 2012-12-24T15:43:22.620 回答