次の質問があります。
配列内のすべての整数が数値の因数である場合はtrueを返し、それ以外の場合はfalseを返す関数を記述します。
以下のコードを試しました:
function checkFactors(factors, num) {
for (let i=0; i<factors.length; i++){
let element = factors[i];
console.log(element)
if (num % element !== 0){
return false
}
else {
return true
}
}
}
console.log(checkFactors([1, 2, 3, 8], 12)) //➞ false
私の解決策はtrueを返しますが、これは誤りです。それを台無しにしているのは、elseステートメントであることを知っています。しかし、elseステートメントがなぜそこに行けないのかを理解したいと思います。
コードのロジックが間違っています。配列のすべての要素をチェックし、すべての要素が条件を満たす場合はtrueを返しますが、要素の1つが条件を満たさない場合はすぐにfalseを返します。 elseは、1つの項目が条件を満たすが、すべての要素ではないことを意味します。それが問題です。
はい、問題の原因となっている「その他」。私はそれを削除し、forループの外側に「return true」を追加しました。
function checkFactors(factors, num) {
for (let i=0; i<factors.length; i++){
let element = factors[i];
console.log(element)
if (num % element !== 0){
return false
}
}
return true;
}