Javascript if语句同时返回if和elseif?
我正在尝试编写一个代码,将一个数字(1-100)随机化,然后打印从40到那个数字的所有奇数。如果数字小于40,则应将所有数字打印到随机数字 i、 e.如果数字为45,则应打印41、43、45。如果是5,它应该打印1,2,3,4,5 我下面的代码在添加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语句应该是一种方式还是另一种方式,而不是两者兼而有之 有什么想法可以帮助我解决这个问题,或者我做错了什么 提前谢
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,我的答案旁边应该有一个勾号。单击它,它将变为绿色。