Ruby 針對陣列的一些處理方法 — map, reduce, select
在Ruby 中 ,若要對陣列中的值進行一些處理,常會使用到map、reduce及select等方法,三個方式主要作用以及用法整理如下,簡單來說:
map會去針對陣列中每一個值去執行一些計算,然後產生一個新的陣列,所以可以在map後面的{}中撰寫要針對陣列中每一個值要進行的計算式。
reduce則是可以設定一個初始值,然後讓初始值與陣列中的每一個值進行運算,最後得到一個值,例如可以設定初始值為0,然後累加陣列中的每一個值,得到這個陣列的值的總和。
select則可以根據一些條件,將陣列中符合的值篩出,另外產生一個陣列。
與JavaScript的比較
在之前的文章其實也有討論到,JavaScript其實也有類似上述對陣列進行處理的一些方法,在這邊特別將上述方法與JavaScript使用的方式做一個表列,下表是以list=[2,3,4]作為範例舉例。統整說明如下:
Ruby中map的作用與JavaScript中的map以及forEach雷同,只是JavaScript的forEach方法只會依序對陣列中的值作用,不會另外產生一個新陣列,所以要先建一個空陣列,再將作用完的值塞進陣列中。
Ruby中reduce的使用方法也與JavaScript的使用方法雷同,只是撰寫方式略有不同。
Ruby中的select方法來篩選陣列中的值則是與JavaScript中的filter類似,filter一樣也可以設定一些條件來找出陣列中符合的值。
參考資料:
為你自己學 Ruby on Rails — 數字、字串、陣列、範圍、雜湊、符號
JavaScript Functional Programming — map, filter and reduce