2016-05-10 23 views
0

在以下reduction + map操作中,no。 3令我困惑。任何人都可以請解釋爲什麼array.prototype.reduce()對一個元素的數組

// 1 
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => y) // -> 3, all good 

// 2 
[1,2,3,4,5].filter(x => x<=3).reduce((x, y) => 0) // -> 0, still good 

// 3 
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => 0) // -> 3, hello? 

換句話說:怎麼來的一個元素的陣列上的減少忽略了地圖0操作?這最終將用於一組對象,如在.reduce((x,y) => y.attr)中那樣,其也返回y而不是用於單個元素陣列的y.attr

+0

只有一個元素有規範的 –

+1

部分:「如果陣列僅具有一個元素(不管位置)和無初值被提供,或者如果初值設置,但數組是空的,獨奏值將被返回而不調用回調。「 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce –

+0

這顯然不得不導致一些RTFM的答案。非常感謝您爲我打電話給我的一天! –

回答

相關問題