JavaScript主检查器不工作
我的主检查器不工作。我认为有更简单的方法来完成这项挑战,但我需要的功能是: 对于给定的数字p: 1) 用2到p的数字填充数组numaray 我通过以下方式实现了这一目标:JavaScript主检查器不工作,javascript,arrays,for-loop,while-loop,Javascript,Arrays,For Loop,While Loop,我的主检查器不工作。我认为有更简单的方法来完成这项挑战,但我需要的功能是: 对于给定的数字p: 1) 用2到p的数字填充数组numaray 我通过以下方式实现了这一目标: for (var i=2; i<(p + 1); i++) { numArray.push(i); }; 似乎错过了数字 函数checkIfPrime(p){ 努马拉伊=[]; primeArray=[]; 对于(var i=2;i
for (var i=2; i<(p + 1); i++) {
numArray.push(i);
};
似乎错过了数字
函数checkIfPrime(p){
努马拉伊=[];
primeArray=[];
对于(var i=2;i<(p+1);i++){
努马拉推(i);
};
对于(var j=0;j console.log(checkIfPrime(p))代码>正如Mike所说,在修改数组时使用for循环迭代数组通常不是一个好主意
我认为有两种方法可以做到这一点:
或者手动管理迭代变量,并确保它仅在需要时递增
或者使用数组的筛选方法。下面是一个基本示例,可以帮助您开始:
[1,2,3].filter(function(x){return x != 2})
// Will return [1,2]
请记住,这将返回一个带有筛选值的新数组,因此您必须通过执行类似于numArray=numArray.filter(…)
的操作来重新评估它,因为您对建议比对工作代码更感兴趣,所以让我们从备选方案开始
问题是,当您从数组中拼接一个项时,它会更改其长度。它没有什么新内容,但问题是,您正在迭代同一个数组
因此,对于给定数组[2,3,4,5]
,如果j
为0,prime
将2
。所以您删除了2
和4
。所以新的长度是2。问题是剩余的元素将被转移。所以它看起来像[3,5]
现在在迭代中,j
将是1
。因此,它将从5
开始,并将跳过5
备选方案:
不要删除元素,而是将它们指定给默认值,默认情况下将跳过该值。这样,您的索引将保持正确,并且您的逻辑将变得简单
函数checkIfPrime(p){
var numArray=[];
var primerarray=[];
对于(var i=2;i<(p+1);i++){
努马拉推(i);
};
对于(var j=0;j console.log(checkIfPrime(p))代码>我为younever创建了一个从零开始一直运行到最后的数组,如果您还打算以某种方式更改数组中元素的索引的话。要么从头到尾运行,这样任何splice
操作都不会影响对尚未达到的内容的索引,要么确保每次编写numaray.
和函数名时,都能根据需要更新迭代变量。
[1,2,3].filter(function(x){return x != 2})
// Will return [1,2]