Итак, я думаю, вы хотите go из некоторых данных:
[
{date: "2020-02-21", factor_d1: 1, factor_d2: 1, factor_d3: 3},
...
]
до:
[
{date: "2020-02-21", factor: "factor_d1", value: "1"},
{date: "2020-02-21", factor: "factor_d2", value: "1"},
{date: "2020-02-21", factor: "factor_d3", value: "3"},
...
]
Это можно сделать с помощью flat_map :
def melt(data)
data.flat_map do |entry|
[
{date: entry[:date], factor: "factor_d1", value: entry[:factor_d1]},
{date: entry[:date], factor: "factor_d2", value: entry[:factor_d2]},
{date: entry[:date], factor: "factor_d3", value: entry[:factor_d3]},
]
end
end
Если у вас много элементов factor_x
, это может быть немного громоздко, и вы можете попробовать другой подход.