我正在尝试编写一个随机化数字(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())
答案 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())