我有一个哈希数组:
g_list = [
{:groups => [{:id => 5}]},
{:groups => [{:id => 6}]}
]
我需要从结构中获取一组 :id
值。我想得到 [5, 6]
。
我如何遍历哈希数组,并挖掘
其中的项目?
我尝试使用 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
它返回了我预期的结果,但我想知道我是否可以用更好的方式编写它。
最佳答案
数组索引可以作为参数的一部分传递给您的 dig
调用。您希望索引 0
从数组中提取单个元素。
g_list.map{|g| g.dig(:groups, 0, :id)}
# => [5, 6]
关于ruby - 从哈希数组中的哈希中获取 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50270250/