Я прочитал довольно много постов, но ни один, похоже, не делает этого, что немного хитро.
Скажем, у меня есть хеш, который содержит массив в качестве одного из своих значений.
hash = {
:a => 'one',
:arr => [
{:id => 'ten', :amount => 10, :b => 'two'},
{:id => 'twenty', :amount => 20, :b => 'two'},
{:id => 'apple', :amount => 7, :b => 'applesauce'}
],
:c => 3
}
Я хочу преобразовать это в массив хэшей (который будет иметь размер содержащегося массива) следующим образом:
# => [
{:a => 'one', :id => 'ten', :amount => 10, :b => 'two', :c => 3},
{:a => 'one', :id => 'twenty', :amount => 20, :b => 'two', :c => 3},
{:a => 'one', :id => 'apple', :amount => 7, :b => 'applesauce', :c => 3}
]
Преобразование должно поддерживать любые пары ключ / значение внутри и снаружи массива, и в идеале я мог бы передать ключ массива, чтобы попросить его выполнить действие:
flatten_hash_array(hash, :arr)
Я понимаю, что Ruby flatten
в классе Array - это не то, что нам нужно. Вцепившись в глагол! Любая помощь будет оценена.