【发布时间】:2016-03-29 20:45:32
【问题描述】:
我的代码中的 cmets 最好地解释了这个问题。
// Find all commonNums divisible by arr && sequential that produce a whole number quotient.
// commonNums [ 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75]
// arr [1,5]
// sequential [ 2, 3, 4 ]
for (var n = 0; n < commonNums.length; n++) {
for (var o = 0; o < sequential.length; o++) {
for (var p = 0; p < arr.length; p++) {
if (commonNums[n] % arr[p] === 0 && commonNums[n] % sequential[o] === 0) {
console.log(commonNums[n]);
}}}
}
由于数组的长度不同,简单地用一个长度为 commonNums.length 的循环进行迭代会产生未定义的值。我的解决方案是使用 3 个循环,每个数组一个。
如果common nums 除以arr 没有余数,如果common nums 除以sequential 没有余数,则返回该数。对于 arr [1,5],返回的第一个数字应该是 60。
为什么这个解决方案会失败?
【问题讨论】:
-
您看到了什么错误?
-
返回的第一个数字不应该是10吗?毕竟
10 % 1 == 0和10 % 2 == 0 -
我没有收到错误,但我确实得到了 10 作为熵建议的第一个数字。 10, 10, 15, 15, 20, 20, 20, 20, 30, 30, 30, 30, 40, 40, 40, 40, 45, 45, 50, 50, 60,60,60,60,60, 60、70、70、75、75。
-
根据您的第一条评论,您应该在 commonNums 中找到所有可以被 arr && 连续整除的数字。这是否意味着只有当它可以被 arr 和顺序中的所有数字整除时才应该打印数字?
-
代码完全按照它的编写方式运行,没有问题。如果您的输出不正确,则说明您没有正确定义问题。
标签: javascript arrays