2

我有一个像这样结构的哈希数组

[{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}] 

等我如何访问给定特定的价格payer_id?我知道这个问题很基本,但我无法弄清楚。

4

1 回答 1

4

你可以这样做

payers = [{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
payer_id = 2

payers.detect { |payer| payer[:payer_id] == payer_id }.try(:[], :price)
# => 30

我曾经detect得到第一个匹配 id 的付款人,然后得到它的价格。如果没有匹配的付款人,您会被nil退回,因此您可以使用它try来获取价格,这样即使没有找到付款人,代码也不会引发错误。
try是 ActiveSupport 的一部分,所以如果您不使用它,只需替换.try(:[], :price)[:price].

于 2013-01-04T05:42:09.047 回答