尝试查找整数的所有可分数,但在切换循环后得到错误的答案。
function divisors(integer) {
let divNumbers = []
switch(true) {
case (integer % 2 === 0):
divNumbers.push(2);
case (integer % 3 === 0):
divNumbers.push(3);
case (integer % 4 === 0):
divNumbers.push(4);
case (integer % 5 === 0):
divNumbers.push(5);
break;
default: divNumbers.push(integer)
}
return divNumbers;
};
divisors(15)
获得3,4,5作为divNumbers,其中4不应该在这里。为什么呢?
答案 0 :(得分:2)
这是一个不会被硬编码的正确解决方案:
var divisors = function (num) {
const initial = num, result=[];
while(num--) {
if (initial % num ===0) {
result.push(num);
}
}
return result;
}
如果您想在除数中得到数字,请执行以下操作:
var divisors = function (num) {
const initial = num, result=[];
num++;
while(num--) {
if (initial % num ===0) {
result.push(num);
}
}
return result;
}
答案 1 :(得分:0)
默认情况下,交换机stamenet会掉线。为了防止这种情况,您应该在每个之后break
。话虽如此,在这种情况下,您最终只能使用3
,因为15
可以被3
整除。一旦划分成功,你就break
退出了开关:
function divisors(integer) {
let divNumbers = []
switch (true) {
case (integer % 2 === 0):
divNumbers.push(2);
break;
case (integer % 3 === 0):
divNumbers.push(3);
break;
case (integer % 4 === 0):
divNumbers.push(4);
break;
case (integer % 5 === 0):
divNumbers.push(5);
break;
default:
divNumbers.push(integer)
}
return divNumbers;
};
console.log(divisors(15));

为确保您最终同时使用数组中的3
和5
,我建议您更换为if
条件,因为您需要倍数< / strong>触发条件:
function divisors(integer) {
let divNumbers = []
if (integer % 2 === 0) {
divNumbers.push(2);
}
if (integer % 3 === 0) {
divNumbers.push(3);
}
if (integer % 4 === 0) {
divNumbers.push(4);
}
if (integer % 5 === 0) {
divNumbers.push(5);
}
return divNumbers;
}
console.log(divisors(15));
&#13;
希望这有帮助! :)