我做了一個函數來檢查一個數是不是質數,如果不是,則返回該數,否則(如果它是素數)則返回0.在JavaScript中減法的意外結果
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調用中,指定第二個參數,即total'的初始值 - 爲'0' - 否則它將是數組中的第一個數字,即'5',因此您的' 5'回答。請參閱:https://jsfiddle.net/88gx55tm/ – tymeJV