gpt4 book ai didi

javascript - JavaScript 中的reduce 方法出现意外结果

转载 作者:行者123 更新时间:2023-11-28 13:10:57 26 4
gpt4 key购买 nike

我做了一个函数来检查一个数字是否是质数,如果不是,则返回该数字,否则(如果是质数)则返回0。

var maybePrimeNumber = [5, 8, 11, 14, 17, 20, 23, 28, 31]; //numbers to test

function isNotPrime(integer){
var prime = true; //start off assuming that it is a prime nr for now
var returnNumber = 0; //to be returned at the end

for(i = 2; i<integer; i++){ //go from 2 up to the number,
if(integer % i === 0){ //if the number is divisible by any nr between 2 and itself,
prime = false; //then say that it isn't a prime number
}
}

if(!prime){ //if it isn't a prime number, then
returnNumber = integer; //prepare to send back the number
}

return returnNumber;
}

document.getElementById("demo").innerHTML = maybePrimeNumber.reduce(
(total, integer) => {return total + isNotPrime(integer)}
);
//sum all non-prime numbers up from the array and put the sum into the paragraph "demo"

问题如下:

当我运行这个时,它给了我 75,但它应该给我 70。

所以当我用以下内容替换最后一行时:

document.getElementById("demo").innerHTML = isNotPrime(maybePrimeNumber[0]);

检查它是否错误地将 5 计算为非质数 - 它返回 0,因此它不会计算错误。

为什么它给出的总和是 75 而不是 70?

最佳答案

您应该始终包含 reduce 的初始值。

document.getElementById("demo").innerHTML = maybePrimeNumber
.reduce((total, integer) => {return total + isNotPrime(integer)}, 0);

如果没有包含初始值,total 的第一个值是数组的第一个元素,因此 5 始终包含在总和。

关于javascript - JavaScript 中的reduce 方法出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42447579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com