轉自:http://www.jianshu.com/p/8de9b60f9350
Ruby中有幾個常用的遍歷數組的方法,本人經常容易搞混。這里列出來總結一下。
each: 從數組中取出一個元素,作為某個方法的參數。返回未修改的數組本身。irb> [1,3,5,7,9].each { |item| puts item+'!'} => 1!3!5!7!9!map(collect): 對數組中的每一個元素都執行一個相同的操作。數組本身並不被修改(map!和collect!原地進行修改),返回一個修改后的原數組的拷貝。irb> [1,3,5,7,9].map { |item| item + 1 } => [2,4,6,8,10]inject(reduce): 對應上面的map,對數組進行規約。irb> [1,2,3,4,5,6,7,8,9,10].inject(0) { |sum,e| sum += e } => 55 #以0為初值進行規約,規約運算為加法select(detect):使用某種布爾運算,對數組進行篩選。返回篩選后剩下的結果集。irb> [1,2,3,4,5,6,7,8,9,10].select {|item| item.even? } => [2,4,6,8,10]reject: 和select的邏輯相反。irb> [1,2,3,4,5,6,7,8,9,10].reject {|item| item.even? } => [1,3,5,7,9]
