我想寫一個函數,它接受一個數組作爲輸入。如果整數是正數,則對其進行計數。如果整數是負數,則它將它相加。reduce()的第一個參數爲什麼返回undefined?
我覺得在js中的reduce()
助手應該是最好的方式去做這件事,但是當我運行的時候,我會一直返回未定義的第一個參數。
這裏是我的代碼:
function countPositivesSumNegatives(input) {
let countPositive = 0;
let sumNegative = 0
if (input === null || input === []){
return [];
} else {
return input.reduce(function(prev,num){
if (num > 0) {
countPositive++;
}else{
sumNegative = prev + num};
}, 0);
}
return [countPositive, sumNegative];
}
這引發了我一個類型錯誤,說:
類型錯誤:無法讀取屬性「0」的未定義
當我登錄「下一頁」到控制檯在reduce函數內部,除了第一個輸入外,其它日誌都是未定義的。如預期的那樣,第一個是0.但是對於每個後續輸入,其日誌未定義。這是爲什麼發生?
在此先感謝。
啊,這是有道理的。我記得教我關於reduce()的人強調'迴歸'總是成爲回調的一部分。 – newman
還注意到空數組的條件測試是無效的 – charlietfl
@newman - 我添加了一個使用'.forEach()'的實現,我認爲它比嘗試使'.reduce()適合這裏更簡單。 – jfriend00