2017-07-25 21 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]}