下面是我用来遍历一个数组并挑选出质数并将它们推入一个空数组的代码。我的问题是,当我在此节点时,它只返回代码在数组中找到的第一个质数,而不管数组中是否还有更多的质数。我找不到我可能错过的..。
let primeXray = function(num) {
if (num < 2)
return false;
for (i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
let choosePrimes = function(nums) {
let primeBlock = [];
for (i = 0; i < nums.length; i++) {
let num = nums[i];
if (primeXray(num)) {
primeBlock.push(num);
}
}
return primeBlock;
}
console.log(choosePrimes([36, 48, 9, 13, 19])); // [ 13, 19 ]
console.log(choosePrimes([5, 6, 4, 11, 2017])); // [ 5, 11, 2017 ]发布于 2020-10-03 19:11:33
问题是您没有用let或var声明i,所以它是由JS创建并重用的。您的primeXray更改了i,从而干扰了另一个function
let primeXray = function(num) {
if (num < 2)
return false;
for (let i = 2; i < num; i++) {
if (num % i === 0)
return false;
}
return true;
}
let choosePrimes = function(nums) {
let primeBlock = [];
for (let i = 0; i < nums.length; i++) {
let num = nums[i];
if (primeXray(num))
primeBlock.push(num);
}
return primeBlock;
}https://stackoverflow.com/questions/64183365
复制相似问题