在ruby嵌套哈希中访问值的好方法

时间:2018-03-23 10:03:10

标签: ruby

我有以下嵌套哈希。如果listing_idvariable,如何快速访问 {"0"=>{"result_api"=>15229, "listing_id"=>4}, "1"=>{"result_api"=>15229, "listing_id"=>2}, "2"=>{"result_api"=>15229, "listing_id"=>1}} 值?

enable_language(ASM_MASM)

3 个答案:

答案 0 :(得分:3)

您可以这样做:

h.find{|k, v| v['listing_id'] == @var}[1]["result_api"]

首先获得find相关结果并获取双元素数组[key, value],然后使用[1]访问这些值,然后访问所需的密钥。

答案 1 :(得分:2)

你可以这样做:

hash = { "0" => { "result_api" => 15229, "listing_id" => 4 }, 
         "1" => { "result_api" => 15229, "listing_id" => 2 }, 
         "2" => { "result_api" => 15229, "listing_id" => 1 } }

hash.values.find{ |h| h['listing_id'] == @var }['result_api']

答案 2 :(得分:2)

虽然 mrzasa Szymon ,但这两个答案都适用,但如果@var包含此值<{1}}中的任何listing_id都不会给您带来错误。

  

NoMethodError:未定义的方法`find&#39;为零:NilClass

OR

  

NoMethodError:未定义的方法`[]&#39;为零:NilClass

相反我更喜欢以下方式:

hash