简化'?:'条件运算符的使用

时间:2011-12-15 07:36:30

标签: javascript optimization for-loop conditional-operator

我有一个像这样写的循环

for( i = (count>=0)?1:-1;(count>=0)?i<=count:i>=count;(count>=0)?i++:i--){
           do_something_with( i )
        }

正如您所看到的,我在循环初始化中使用了?运算符3次。

有没有办法简化这个? 目前,cpu必须至少计算2个额外决策,最多3个额外决策 对于每次迭代。我想减少这个。

Ps:我试图避免使用if语句。

目前我使用javascript作为语言

2 个答案:

答案 0 :(得分:2)

您可以在循环开始时做出一次决定,并使用!=运算符进行比较:

for (var dir = count >= 0 ? 1 : -1, i = dir; i != count + dir; i += dir){
  do_something_with(i);
}

演示:http://jsfiddle.net/Guffa/2Z369/

答案 1 :(得分:1)

在循环体内形成逻辑,如:

// reverse count if required
int fixedCount = count >= 0 ? count : 0 - count;
for (i = 1; i <= fixedCount; i++)
{
    // reverse i if required
    int fixedIndex = count >= 0 ? i : 0 - i;

    do_something(fixedIndex);
}