我有一个数组如下
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]]
任何人都可以提出建议,任何帮助将不胜感激
使用以下
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)