我有一个像这样结构的哈希数组
[{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
等我如何访问给定特定的价格payer_id
?我知道这个问题很基本,但我无法弄清楚。
我有一个像这样结构的哈希数组
[{:payer_id=>1, :price=>20}, {:payer_id=>2, :price=>30}]
等我如何访问给定特定的价格payer_id
?我知道这个问题很基本,但我无法弄清楚。
你可以这样做
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]
.