if语句同时返回if和else同时?

时间:2013-09-05 11:31:34

标签: javascript if-statement for-loop return-value

我正在尝试编写一个随机化数字(1 - 100)的代码,然后将所有奇数从40打印到那个。如果数字小于40,则应将所有数字打印到随机数字。

即。如果数字是45,它应该打印41,43,45。如果它是5,它应该打印1,2,3,4,5。

我的代码一直有效,直到我添加else if语句。当我添加此数字时,如果数字大于40,它仍然包括从0到40的所有数字?我不明白为什么我认为if陈述应该采用这种或那种方式而不是两种方式?

任何想法都有助于解决这个问题,或者我做错了什么?

提前致谢

function myFunc() {

var x = Math.floor(Math.random() * 100);
var counter = [];

for (var i = 0; i < x; i++) {
    if (i > 40 && i % 2 == 1) {
        counter.push(i);
    } else if (i < 40) {
        counter.push(i);
    }
}

return counter + ',' + x;

}

console.log(myFunc())

2 个答案:

答案 0 :(得分:3)

只需添加一个新变量来检查从哪里开始。这样你就可以缩短循环中的条件。

function myFunc() {

  var x = Math.floor(Math.random() * 100);
  var counter = [];
  var start = x >= 40 ? 40 : 0; // new variable

  for (var i = start; i < x; i++) {
    if (i % 2 === 1) { counter.push(i); }
  }
  return counter + ',' + x;
}

console.log(myFunc())

答案 1 :(得分:0)

你写的不是正确的条件:

else if (i < 40)

此语句已运行,因为第一个语句为false且我正在进行1,2,3,4, 你必须将第二个陈述更改为x&lt; 40

function myFunc() {

var x = Math.floor(Math.random() * 100);
var counter = [];

for (var i = 0; i < x; i++) {
    if (i > 40 && i % 2 == 1) {
        counter.push(i);
    } else if (x <= 40) { // only when x <= 40
        counter.push(i);
    }
}

return counter + ',' + x;

}

console.log(myFunc())