for循环和负数

时间:2014-09-27 21:03:05

标签: javascript

这是一个非常基本的Javascript问题。看,我有一个像这样开始的for循环

for (i=0;i<=negativeorpositivenumber;i++) {

顾名思义,positiveornegativenumber变量可以包含正数或负数。结果,如果所述变量为正,则for循环起作用。如果它是负数,则循环立即退出,因为我已经大于negativeorpositivenumber。

有没有办法,不使用两个for循环(一个用于负数,一个用于正数),以便双向工作?如果变量negativeorpositivenumber为负数,那么将i&lt; =变为i&gt; =和i ++变为i--

我认为这个问题也可能适用于多种语言。

编辑:也许我应该更清楚地说明这一点。 我无法使用绝对值,因为i的值实际上需要倒计时。感谢所有有帮助并且使用Math.abs回答的人。

4 个答案:

答案 0 :(得分:2)

for (i=0;i<=Math.abs(negativeorpositivenumber);i++) {
    var original = negativeorpositivenumber > 0 ? i : -i;    // optional

Documentation here

答案 1 :(得分:0)

为什么不使用绝对值。

for(int i = 0; i < abs(positiveorneativenumber); i++) 
{
    //do stuff
}

答案 2 :(得分:0)

类似于上面的评论,但根据数字的符号,你可以像这样做一个while循环:

var sign = negativeorpositivenumber? negativeorpositivenumber <0?-1:1:0
while(i != 0){
  i -= sign;
}

答案 3 :(得分:0)

要向任一方向循环,您可以先检查您要去的地方,以及界限是什么:

var dir = negativeorpositivenumber > 0 ? 1 : -1;
var min = negativeorpositivenumber > 0 ? 0 : negativeorpositivenumber;
var max = negativeorpositivenumber > 0 ? negativeorpositivenumber : 0;

for (var i = 0; i >= min && i <= max; i += dir) {
  ...
}

演示:http://jsfiddle.net/Guffa/cbh5c7rb/