你有一個(gè)對(duì)象數(shù)組,想要把它們歸納為一個(gè)值,類似于 Ruby 中的 reduce() 和 reduceRight() 。
可以使用一個(gè)匿名函數(shù)包含 Array 的 reduce() 和 reduceRight() 方法,保持代碼清晰易懂。這里歸納可能會(huì)像對(duì)數(shù)值和字符串應(yīng)用 + 運(yùn)算符那么簡單。
[1,2,3,4].reduce (x,y) -> x + y
# => 10
["words", "of", "bunch", "A"].reduceRight (x, y) -> x + " " + y
# => 'A bunch of words'
或者,也可能更復(fù)雜一些,例如把列表中的元素聚集到一個(gè)組合對(duì)象中。
people =
{ name: 'alec', age: 10 }
{ name: 'bert', age: 16 }
{ name: 'chad', age: 17 }
people.reduce (x, y) ->
x[y.name]= y.age
x
, {}
# => { alec: 10, bert: 16, chad: 17 }
Javascript 1.8 中引入了 reduce 和 reduceRight ,而 Coffeescript 為匿名函數(shù)提供了簡單自然的表達(dá)語法。二者配合使用,可以把集合的項(xiàng)合并為組合的結(jié)果。