У меня есть массив хэшей:
g_list = [
{:groups => [{:id => 5}]},
{:groups => [{:id => 6}]}
]
Мне нужно получить массив :id
значений из структуры. Я хочу получить [5, 6]
.
Как я могу перебрать массив хешей и dig
элементы внутри?
Я пытался использовать map
и dig
:
g_list.map{|g| g.dig(:groups, :id)}
но я получаю ошибку TypeError: no implicit conversion of Symbol into Integer
. Я также попытался обработать это с помощью цикла each
для одного примера групп:
g_list.each do |g|
groups = g.dig(:groups)
puts groups[:id]
end
но я все еще получаю ту же ошибку. Я наконец написал это:
arr = g_list.map {|g| g.dig(:groups).map{|i| i[:id]}}.flatten
и он возвращает то, что я ожидал, но мне интересно, смогу ли я написать это лучше.