Javascript if语句同时返回if和elseif?

Javascript if语句同时返回if和elseif?,javascript,if-statement,for-loop,return-value,Javascript,If Statement,For Loop,Return Value,我正在尝试编写一个代码,将一个数字(1-100)随机化,然后打印从40到那个数字的所有奇数。如果数字小于40,则应将所有数字打印到随机数字 i、 e.如果数字为45,则应打印41、43、45。如果是5,它应该打印1,2,3,4,5 我下面的代码在添加else if语句之前一直有效。当我添加这个数字时,如果数字大于40,它仍然包括从0到40的所有数字?我不明白为什么正如我所想的那样,if语句应该是一种方式还是另一种方式,而不是两者兼而有之 有什么想法可以帮助我解决这个问题,或者我做错了什么 提前谢

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

i、 e.如果数字为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())
函数myFunc(){
var x=Math.floor(Math.random()*100);
var计数器=[];
对于(变量i=0;i40&&i%2==1){
反推(i);
}否则如果(i<40){
反推(i);
}
}
返回计数器+','+x;
}
console.log(myFunc())

只需添加一个新变量,检查从何处开始。这样也可以缩短循环中的条件

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())
函数myFunc(){
var x=Math.floor(Math.random()*100);
var计数器=[];
var start=x>=40?40:0;//新变量
对于(变量i=开始;i
您写入的条件不正确:

else if (i < 40)
else如果(i<40)
此语句已运行,因为第一个语句为false,而我正在执行1,2,3,4, 您必须将第二个语句更改为x<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())
函数myFunc(){
var x=Math.floor(Math.random()*100);
var计数器=[];
对于(变量i=0;i40&&i%2==1){
反推(i);

}否则如果(循环中的x)变量
i
从0开始上升到
x
。如果
x>40
,循环仍将从0迭代
i
,然后上升到
x
。您不清楚什么?您可能想检查
x>40
或○x<40
?无论如何,请注意,使用这种类型的情况排除了
x为40`!循环中没有任何地方检查
x<40
。您需要检查它以确定您希望循环对每个
i
执行什么操作。很好,谢谢。有一件事我不明白。为什么变量
start
这里只处理三元运算符,而不是if..else语句?我理解它们是相同的东西,只是语法不同?没问题。在这种情况下应该将其标记为最佳答案:)。它将处理if…then,但我想这取决于您如何声明它。
if(x>=40){var start=40;}else{var start=0;}
。这就是你的意思吗?啊,是的,它是双向的,我的错误。我如何在这里标记为最佳答案?请原谅我的无知,这是该网站的新手。@moonshineOutlaw,我的答案旁边应该有一个勾号。单击它,它将变为绿色。