轉自:http://www.jianshu.com/p/8de9b60f9350數組
Ruby中有幾個經常使用的遍歷數組的方法,本人常常容易搞混。這裏列出來總結一下。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]