Reputation: 6346
I have the following code:
>[['string', 'User'], Foo.all.map {|c| ["number", c.name]}, ['number', 'Average Time']]
=> [["string", "User"], [["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"]], ["datetime", "Average Time"]]
What I would like to do is flatten the passed Foo enumerable array into simply:
=> [["string", "User"], ["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"], ["datetime", "Average Time"]]
I tried the following but it didn't quite do what I wanted:
>[['string', 'User'], Foo.all.map {|c| ["number", c.name]}.flatten, ['number', 'Average Time']]
=> [["string", "User"], ["number", "Bar1", "number", "Bar2", "number", "Bar3"], ["datetime", "Average Time"]]
Note when testing you can replace Fool.all.map
part with [["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"]]
as demonstrated with the example output.
Upvotes: 0
Views: 609
Reputation: 67860
With the splat operator:
[
['string', 'User'],
*Foo.all.map { |c| ["number", c.name] },
['number', 'Average Time'],
]
Upvotes: 5
Reputation: 363
Try this
([['string', 'User']] + Foo.all.map {|c| ["number", c.name]} + [['number', 'Average Time']])
Upvotes: 1