Ruby中數組的遍歷

轉自: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]
相關文章
相關標籤/搜索