Я хочу создать вложенный хэш, используя четыре значения type
, name
, year
, value
.т. е. ключ первого хэша будет type
, значением будет другой хеш с ключом name
, тогда значением этого будет другой хеш с ключом year
и значением value
.
Массив объектов, которые я перебираю, выглядит следующим образом:
elements = [
{
year: '2018',
items: [
{
name: 'name1',
value: 'value1',
type: 'type1',
},
{
name: 'name2',
value: 'value2',
type: 'type2',
},
]
},
{
year: '2019',
items: [
{
name: 'name3',
value: 'value3',
type: 'type2',
},
{
name: 'name4',
value: 'value4',
type: 'type1',
},
]
}
]
И я собираю все значения вместе, используя два цикла, как это:
elements.each do |element|
year = element.year
element.items.each |item|
name = item.name
value = item.value
type = item.type
# TODO: create nested hash
end
end
Ожидаемый результат примерно такой:
{
"type1" => {
"name1" => {
"2018" => "value1"
},
"name4" => {
"2019" => "value4"
}
},
"type2" => {
"name2" => {
"2018" => "value2"
},
"name3" => {
"2019" => "value3"
}
}
}
Я опробовал некоторые методы, но, похоже, они не работают так, как ожидалось.Как я могу это сделать?