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]