我得到undefined。代碼沒有這個功能。我究竟做錯了什麼?javascript reduce得到undefined
var myArr = [ 1, 2, 3, 4, 5 ];
function getSums(arr) {
arr.reduce(a => a+1, 0);
}
document.write(getSums(myArr));
我得到undefined。代碼沒有這個功能。我究竟做錯了什麼?javascript reduce得到undefined
var myArr = [ 1, 2, 3, 4, 5 ];
function getSums(arr) {
arr.reduce(a => a+1, 0);
}
document.write(getSums(myArr));
三個問題:
使用reduce
,您使用的第一參數(至少):累加器,和當前條目。 (它具有其他參數爲好,但前兩個是最常使用的。)
你的邏輯只是在做a + 1
,這是不是從陣列增加值加在一起,它的加入1
的價值該條目。
您需要返回您的getSums
函數返回的值爲reduce
。
所以:
var myArr = [ 1, 2, 3, 4, 5 ];
function getSums(arr) {
return arr.reduce((sum, a) => sum + a, 0);
//^^^^^^ ^^^^ ^ ^^^^^^
}
console.log(getSums(myArr));
或者您可以使用箭頭語法定義getSums
,然後返回將意味着如果你用一個簡潔的函數體:
var myArr = [ 1, 2, 3, 4, 5 ];
let getSums = arr => arr.reduce((sum, a) => sum + a, 0);
console.log(getSums(myArr));
你不需要傳遞一個初始值來減少包裝因爲'除了一個。 – ftor
@ LUH3417:'reduce' **的回調總是**接受累加器,這是第一個參數。確實,我們可以在這種特殊情況下將',0'離開呼叫,因爲這是一個求和操作。我通常更喜歡它的清晰度,但這是一種風格。 –
您需要從函數返回。 –
@nenad這是一個箭頭函數,默認情況下它有RETURN。 –
'getSums'不是一個箭頭函數。 – JJJ