CoffeeScript 歸納數組

2022-06-29 16:55 更新

歸納數組

問題

你有一個對象數組,想要把它們歸納為一個值,類似于Ruby中的reduce()和reduceRight()。

解決方案

可以使用一個匿名函數包含Array的reduce()和reduceRight()方法,保持代碼清晰易懂。這里歸納可能會像對數值和字符串應用+運算符那么簡單。

[1,2,3,4].reduce (x,y) -> x + y
# => 10

["words", "of", "bunch", "A"].reduceRight (x, y) -> x + " " + y
# => 'A bunch of words'

或者,也可能更復雜一些,例如把列表中的元素聚集到一個組合對象中。

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為匿名函數提供了簡單自然的表達語法。二者配合使用,可以把集合的項合并為組合的結果。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號