У меня есть этот Params:Как создать хэш из многомерного массива
x=["room_adults_1", "room_childs_1", "room_adults_2", "room_childs_2"]
И когда я запускаю этот код:
y = x.map { |x| x.match(/^(room)_(adults|childs)_(\d+)/)}
z = y.map { |x| [x[1],[x[2],[x[3].reverse,""]]]}
я получаю этот массив:
=> [["room", ["adults", ["1", ""]]], ["room", ["childs", ["1", ""]]], ["room", ["adults", ["2", ""]]], ["room", ["childs", ["2", ""]]]]
Я хотел бы преобразовать этот последний результат в хэш. Если я использую z.to_h
(свернуть последний элемент), я получаю {"room"=>["childs", ["2", ""]]}
. Но я хотел бы, чтобы Хеш вот так:
{
"room":{
"adults":{[
{"1": ""},
{"2": ""}
]},
"child":{[
{"1": ""},
{"2": ""}
]}
}
}
Как я могу это сделать?
@lcguida ... stackoverflow e l'inglese: P – sirion1987
Хэш, который вы хотите, не является хешем. Это не действительный объект Ruby. –
Для детей/взрослых: {[...]}? – sirion1987