分组依据,ruby 中的数组数组

Mru*_*kar 0 ruby arrays

我有一个数组如下

    some_array = [["FANUC CORP", "100048", 9],
                  ["FANUC CORP", "100048", 26],
                  ["FANUC CORP", "100048", 23],
                  ["FANUC CORP", "100048", 111]]
Run Code Online (Sandbox Code Playgroud)

我想通过以下方式分组:

=> ["FANUC CORP", "100048", [9, 26,23,111]]

任何人都可以提出建议,任何帮助将不胜感激

Sal*_*lil 5

使用以下

some_array.group_by{|a| [a[0], a[1]]}
          .map{|key, value| key + [value.map(&:last)]}
          .flatten(1)
Run Code Online (Sandbox Code Playgroud)

对于 group by 中的多个值

2.3.1 :046 > some_array = [["FANUC CORP", "100048", 9], ["FANUC CORP", "100048", 26]
   , ["FANUC CORP", "100048", 23], ["FANUC CORP", "100048", 111]
   , ["FANUC CORP", "100049", 19],["FANUC CORP", "100049", 126], 
     ["FANUC CORP", "100049", 123], ["FANUC CORP", "100049", 1111]]
 => [["FANUC CORP", "100048", 9], ["FANUC CORP", "100048", 26], 
    ["FANUC CORP", "100048", 23], ["FANUC CORP", "100048", 111], 
    ["FANUC CORP", "100049", 19], ["FANUC CORP", "100049", 126], 
    ["FANUC CORP", "100049", 123], ["FANUC CORP", "100049", 1111]] 

 2.3.1 :047 > some_array.group_by{|a| [a[0], a[1]]}
                        .map{|key, value| key + [value.map(&:last)]}
                        .flatten(1)
 => ["FANUC CORP", "100048", [9, 26, 23, 111], 
     "FANUC CORP", "100049", [19, 126, 123, 1111]] 
Run Code Online (Sandbox Code Playgroud)