我有比賽的對象具有以下屬性的數組:紅寶石陣列 - 返回重複的和非重複的對象的集合
- 方式
- race_period_id
- track_id
我想要在名爲plural_array的新數組中收集這些Race對象 - 其中way和track_id屬性值相同 - 。 (基本上,每個重複的Race對象由way和track_id定義。)在另一個名爲singular_array的數組中,我想收集所有那些非重複的Race對象。
例如,讓我們假設我有以下屬性值的四個賽對象:
race1:
- 方式= 1
- race_period_id = 20304
- track_id = 94949
race2:
- 方式= 2
- race_period_id = 20888
- track_id = 94949
race3
- 方式= 1
- race_period_id = 20899
- track_id = 94949
race4
- 方式= 1
- race_period_id = 20888
- track_id = 885858
所以在這裏我有兩個 「複數」 的對象:1賽和race3。還有兩個「奇異」的對象:race2和race4。
如果我有一個名爲方法get_plural_and_singular_arrays(races_array),我會用什麼算法返回plural_array(含對象只種1和race3)和singular_array(只包含對象RACE2和race4) ?
def get_plural_and_singular_arrays(races_array)
# algorithm here
return plural_array, singular_array
end
+1一個漂亮實用的解決方案。但我會使用分區:list.group_by {| r | [r.way,r.track_id]} .partition {| ary | ary.size> 1} – tokland
+1對於可以寫成單行的代碼! –
順便提一下,我的單行程(使用'ActiveSupport'數組增強功能):'list.group_by {| i | [i.way,i.track_id]} .partition(&:many?)' –