2017-12-17 15 views
0

私は0〜9の数値を生成するfor-loopを含むスクリプトを持っています。スクリプトには、forループによって生成された数字が3または5で割り切れるかどうかをチェックする関数も含まれています。割り切れる場合(9が9で割り切れるなど)、if/else文はtrueを返し、分割できない場合、条件文はfalseを返します。条件文の結果に基づいて.push()を使用して変数に配列を挿入します。

私が達成したいのは、条件文がtrueを返すときに、数値を空の配列に追加する必要があるということです。

所望の結果は、この場合には、次のようになります。

var myArray = [0, 3, 5, 6, 9]; 

これは私の現在のコードです:

var isDivisibleArray = []; 

for(var i = 0; i < 10; i++) { 
    isMultiple(i); 
} 

function isMultiple() { 

    var isMultipleOf3 = i % 3; 
    var isMultipleOf5 = i % 5; 

    if(isMultipleOf3 === 0 || isMultipleOf5 === 0) { 
     return true; 
    } 

    else { 
     return false; 
    } 

} 

isMultiple(); 

私は数が3で割り切れるかどうかを確認するために剰余演算子を使用しています図5に示すように、x%3 = 0の場合、xは3で割り切れるので、例として。

私はいくつかの実験も行っています。私がやる場合、これはforループ、私は警告を使用して、結果を印刷するために管理することができます:

for(var i = 0; i < 10; i++) { 
    alert(isMultiple(i)); 
} 

結果はT、F、F、T、F、T、T、F、F、Tでありますこれは成功しなかった

if(isMultipleOf3 === 0 || isMultipleOf5 === 0) { 
    isDivisibleArray.push(i); 
} 

私はまた、条件文の中、このアプローチを試してみました。すべての助けが大いに評価されるだろう!

+0

してみてください最後にisMultiple()を呼び出しますか? –

+0

関数を呼び出すには、そうでなければ実行されません。 –

+0

sidenote:注文を変更します。最初は最大5回と3回 – vaso123

答えて

1

これは動作するはずです:

var isDivisibleArray = []; 

for(var i = 0; i < 10; i++) { 
    if(isMultiple(i)) { 
     isDivisibleArray.push(i); 
    } 
} 

function isMultiple(i) { 
    return i % 5 === 0 || i % 3 === 0 
} 
-1

エラーはあなたが実際にのみチェックする機能を呼び出して、配列にプッシュされていないということです - しかし、あなたは結果を無視します。

あなたが別の関数のための必要はありません異なるパラメータ

function createArray(min = 0, max = 9, divisibleBy = [3, 5]) { 
 
    return [...Array(max + 1).keys()] 
 
    .filter(e => e >= min && divisibleBy.some(i => e % i === 0)) 
 
} 
 

 
console.log(createArray()); 
 
// same as createArray(0, 9, [3, 5])

0

で呼び出すことができる関数の中にそれを置くことによって、このコードは短く、再利用可能にすることができます。さらに、次のよう

if(isMultipleOf3 === 0 || isMultipleOf5 === 0) { 
    return true; 
} 

else { 
    return false; 
} 

は、単に書くことができます。

return isMultipleOf3 === 0 || isMultipleOf5 === 0; 

全体のソリューションは、以下のように簡単です:

var isDivisibleArray = []; 

for(var i = 0; i < 10; i++) { 
    if (i%3 === 0 || i%5 === 0) isDivisibleArray.push(i); 
} 

console.log(isDivisibleArray); //[ 0, 3, 5, 6, 9 ] 
+0

trueですが、関数としてisMultipleを保持すると、拡張子は常に開かれます –

+0

@AyushGupta YAGNIの原則https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_itに違反しています。コード –

+0

私はSOLIDの原則、特に依存性反転の原則を優先したいと思います。 https://en.wikipedia.org/wiki/SOLID_(object-oriented_design) –

-1
let isDivisibleArray = []; 

for(var i = 0; i < 10; i++) { 
    if(isMultiple(i)=== true){ 
    isDivisibleArray.push(i) 
} 
} 

function isMultiple(i) { 

    var isMultipleOf3 = i % 3; 
    var isMultipleOf5 = i % 5; 

    if(isMultipleOf3 === 0 || isMultipleOf5 === 0) { 

     return true; 
    } 

    else { 
     return false; 
    } 

} 

あなたはなぜこの