ruby - 从哈希数组中的哈希中获取 id

标签 ruby hash

我有一个哈希数组:

g_list = [
  {:groups => [{:id => 5}]},
  {:groups => [{:id => 6}]}
]

我需要从结构中获取一组 :id 值。我想得到 [5, 6]

我如何遍历哈希数组,并挖掘其中的项目?

我尝试使用 mapdig:

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/

相关文章:

ruby - ruby 的字符串方法.include 可以吗?与 bang 运算符一起使用?

ruby-on-rails - 如何在选择表单中使用 attr_accessor?

ruby - 如何在 AWS 的 ruby​​ 中使用 get_object?

ruby - 我怎样才能解决 Ruby 中缺少模块继承的问题?

ruby - gem 安装 dm-postgres-adapter 构建错误

C++如何将方法作为模板参数传递

php - 对子域或目录使用哈希码 Cookie

c# - 哈希整数数组

c - Objective-C : SHA1

java - 优化哈希 Java