CoffeeScript攻略4.8:歸納陣列
問題
你有一個物件陣列,想要把它們歸納為一個值,類似於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為匿名函式提供了簡單自然的表達語法。二者配合使用,可以把集合的項合併為組合的結果。
相關文章
- CoffeeScript攻略4.9:篩選陣列陣列
- CoffeeScript攻略4.7:對映陣列陣列
- CoffeeScript攻略4.10:反轉陣列陣列
- CoffeeScript攻略4.1:從陣列生成字串陣列字串
- CoffeeScript攻略4.6:打亂陣列元素陣列
- CoffeeScript攻略4.3:取得陣列最大值陣列
- CoffeeScript攻略4.4:使用陣列交換變數陣列變數
- CoffeeScript攻略4.5:定義陣列範圍陣列
- CoffeeScript攻略1.1:嵌入JavaScriptJavaScript
- CoffeeScript攻略1.3:for迴圈
- CoffeeScript攻略3.7:拆分字串字串
- CoffeeScript攻略3.9:匹配字串字串
- CoffeeScript攻略3.8:字串插值字串
- CoffeeScript攻略3.1:重複字串字串
- CoffeeScript攻略3.4:查詢子字串字串
- CoffeeScript攻略1.2:比較範圍
- CoffeeScript攻略2.4:建立類變數變數
- CoffeeScript攻略2.5:鏈式呼叫物件物件
- 微軟程式歸納新技術:元程式歸納微軟
- CoffeeScript攻略3.10:生成唯一ID
- CoffeeScript攻略2.1:克隆物件(深複製)物件
- 第四章:多維陣列和矩陣 ------------- 4.8 子矩陣的最大累加和陣列矩陣
- CoffeeScript攻略2.3:CoffeeScrip的type函式函式
- oracle段管理歸納Oracle
- html標記歸納HTML
- CoffeeScript攻略3.6:大寫單詞首字母
- 歸併排序-陣列中的逆序對排序陣列
- Spring歸納小結Spring
- 常用Markdown語法歸納
- JavaScript核心概念歸納整理JavaScript
- [心得]git使用技巧歸納Git
- CoffeeScript攻略4.2:類似Python的zip函式Python函式
- CoffeeScript攻略3.2:把字串轉換為小寫形式字串
- CoffeeScript攻略3.3:把字串轉換為大寫形式字串
- CoffeeScript攻略3.5:清理字串前後的空白符字串
- HTML5 標籤歸納HTML
- HTML標籤,簡單歸納HTML
- ROS入門教程歸納1ROS