【发布时间】:2019-04-06 13:04:54
【问题描述】:
我有以下问题:
编写一个函数,如果数组中的所有整数都是数字的因数,则返回 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 语句不能去那里。
【问题讨论】:
-
您应该将
return true退出循环;) 并将return false留在循环内:) 这样做的原因是,否则您的循环在第一次检查后真的停止,返回要么true 或 false,并且您希望它在某些不是因素时立即返回 false。循环外的 return true 将表明所有提供的数字都包含在 number 参数的因数 -
仅供参考,不只是你,这是人们刚开始编程和循环时最常犯的错误之一。 :-)
-
@t.j.crowder 但我们没有一个好的欺骗目标。
-
@JonasWilms - 是的,我给这个加了书签是因为没有很多无关的东西,它真的只是更早的回报。 :-)
-
@T.J.Crowder stackoverflow.com/questions/42913798/… 是我为这类问题写的一般骗子。
标签: javascript arrays loops if-statement