如何从哈希数组中只提取id?

时间:2016-09-18 22:01:27

标签: ruby-on-rails ruby

我想迭代这些数据来提取id的值:

[ {:id => 3, :quantity => 5 }, { :id => 4, :quantity => 3 } ]

3 个答案:

答案 0 :(得分:5)

您可以使用map

arr =[ {:id => 3, :quantity => 5 }, { :id => 4, :quantity => 3 } ]
ids = arr.map( |k| k[:id] }
#=> [3,4]

答案 1 :(得分:2)

[ {:id => 3, :quantity => 5 }, { :id => 4, :quantity => 3 } ].each do |hash|
  puts hash[:id]
end

这将puts屏幕上的每个id值。你可以从那里做你需要做的事。

答案 2 :(得分:1)

Ruby:使用Hash#values_at

在数组上进行映射

在Ruby中有多种方法可以做到这一点。很大程度上取决于你试图表达的内容。如果您不尝试使用代码高尔夫,那么使用Hash#values_at的方法就是这样做。例如:

[{id: 3, quantity: 5}, {id: 4, quantity: 3}].flat_map { |h| h.values_at :id }
#=> [3, 4]

Rails:使用Pluck

提取数据

更像Rails的方法是在查询本身中只需要ActiveRecord::Calculations#pluck所需的属性。例如:

Stuff.where(quantity: [3, 5]).pluck :id

肯定有其他方法可以获得相同的结果。您的里程可能会有所不同,具体取决于您的实际使用情况。

另见

Active Record Query Interface