我想迭代这些数据来提取id的值:
[ {:id => 3, :quantity => 5 }, { :id => 4, :quantity => 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的方法就是这样做。例如:
[{id: 3, quantity: 5}, {id: 4, quantity: 3}].flat_map { |h| h.values_at :id }
#=> [3, 4]
更像Rails的方法是在查询本身中只需要ActiveRecord::Calculations#pluck所需的属性。例如:
Stuff.where(quantity: [3, 5]).pluck :id
肯定有其他方法可以获得相同的结果。您的里程可能会有所不同,具体取决于您的实际使用情况。