Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Group a 2D array

I have the following kind of array

[[y,x], [y,w], [m,e], [m,t],[a,b]]

How would I turn it to

[[y, [x,w]], [m, [e,t]], [a,[b]]

essentially grouping all arrays by their 1st element

like image 691
Nick Ginanto Avatar asked Jan 19 '26 11:01

Nick Ginanto


1 Answers

Using Enumerable#group_by:

a = [['y','x'], ['y','w'], ['m','e'], ['m','t'],['a','b']]
a.group_by(&:first).map { |c, xs| [c, xs.map(&:last)] }
# => [["y", ["x", "w"]], ["m", ["e", "t"]], ["a", ["b"]]]
like image 156
falsetru Avatar answered Jan 22 '26 06:01

falsetru