2017-07-25 22 views
-1

我試圖使用map函數將數組數組合成一個數組,該數組消除了arr [0] [0]中的唯一值,但是將其拉arr [0] [1]並將其與相應的唯一值進行分組。使用Ruby .map方法將數組與獨特的嵌套值組合

arr = [[a, 1], [a, 2], [b,3], [b, 4]] 
=> [[a, [1, 2]], [b, [3,4]]] 

我敢肯定,這是很基本的,但我是相當新的一般的編碼。感謝您的幫助。

+2

開始與'group_by',_then_你需要' map' –

+0

無論何時您舉一個例子,請將想要的或預期的結果顯示爲Ruby對象。我們必須假設'a'和'b'是未說明的變量或方法。如果他們打算成爲字符串或符號,寫入「a」或「:a」。 –

回答

0

試試這個:

arr = [[:a, 1], [:a, 2], [:b, 3], [:b, 4]] 

arr.group_by(&:first).map { |k, v| [k, v.map(&:last)] } 
#=> [[:a, [1, 2]], [:b, [3, 4]]] 

根據你的目標是什麼,你可能想將結果變成一個哈希:

Hash[arr.group_by(&:first).map { |k, v| [k, v.map(&:last)] }] 
#=> {:a=>[1, 2], :b=>[3, 4]}