3

数字 (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())
4

2 に答える 2

0

あなたは正しくない条件を書きます:

else if (i < 40)

このステートメントが実行されます。最初のステートメントが false で、進行中の i が 1,2,3,4 であるため、2 番目のステートメントを 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())
于 2013-09-05T11:55:41.347 に答える