javascript - 测试所有数组元素是否都是数字的因数 - 在 for 循环内返回
问题描述
我有以下问题:
编写一个函数,如果数组中的所有整数都是数字的因数,则返回 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 语句不能去那里。
解决方案
你在一家巧克力店工作,你的老板告诉你检查所有的巧克力(有辣椒巧克力、焦糖巧克力和咖啡巧克力)是否好吃。他告诉你以下内容:
浏览所有巧克力,为每一种巧克力品尝,如果没问题,告诉我一切都很好,否则告诉我有问题¹
你从第一块巧克力开始,那是辣椒巧克力,味道鲜美,你去找你的老板,告诉他一切都好。你的老板对你大吼大叫,因为你还没有尝过焦糖巧克力和咖啡巧克力。
你意识到你的老板实际上希望你这样做:
浏览巧克力,每一种巧克力,尝一尝,如果味道不好,立即告诉我,否则继续,直到你都尝过,然后回到我身边,告诉我一切都很好。²
或在代码中:
// ¹
function checkChocolates(chocolates) {
for(const chocolate of chocolates) {
if(isTasty(chocolate)) {
return true;
} else {
return false;
}
}
}
// ²
function checkChocolates(chocolates) {
for(const chocolate of chocolates) {
if(isTasty(chocolate)) {
continue; // this could be omitted, as a loop keeps looping nevertheless
} else {
return false;
}
}
return true;
}
由于这是编程中非常常见的任务,因此已经有一种更短的方式来表达这一点:
if(chocolates.every(isTasty)) {
alert("all chocolates are fine");
} else {
alert("Oh, that doesnt taste good");
}
whileisTasty
是一个接受巧克力并返回 true 或 false 的函数。
如果你还没有掌握它,那就试试吧!买点巧克力,尝尝!如果有人告诉您“吃巧克力不是在学习”,请回复“我在做橡皮鸭调试”,没有人可以抱怨 :)
推荐阅读
- reactjs - 如何在 react/next 中访问根文件夹
- gradle - 如何禁用 Gmail Api guava 20
- wordpress - 在 WordPress 中创建单页博客
- javascript - 'callAsyncJavaScript' 是否可以在 Promise 示例中使用 setTimeout(..., 1000)?
- python - 如何根据需要设置输入文本pysimplegui
- css - 使用 CSS 将旋转的文本与图像的右上角对齐
- azure-devops - 如何通过 DevOps API 设置团队的积压迭代
- postgresql - Pacemaker 无法在 postgres-11 上启动从节点
- ansible - 存储库之间的 Ansible 共享角色
- javascript - 过多的控制台错误会影响浏览器性能吗?