【问题标题】:Issues iterating over deeply nested hash of hashes inside an array遍历数组中深度嵌套的哈希哈希的问题
【发布时间】:2017-02-05 03:15:13
【问题描述】:

所以,我的问题的快速模型可能看起来像这样......

`def problem
  [{
     'Hash1' => {
       'Hash_1' => 'abcd',
       'Hash_2' => 'abcd',
       'Hash_3' => nil,
     }
   },
   {
     'Hash2' => {
       'Hash_1' => 'efg',
       'Hash_2' => 'efg',
       'Hash_3' => 'efg'
     }
   },
   {
     'Hash3' => {
       'Hash_1' => 'hijk',
       'Hash_2' => nil,
       'Hash_3' => 'hijk'
     }
   }]
end`

例如,我想使用 .each 方法在所有 3 个哈希中为它的每个实例查找 Hash2 的值。

当我这样做时,我到处都会返回 Nil 值。作为一个附加问题,如果hash2 具有nil 值,我想返回N/A 而不是nil

   problem.each do |item|
    item.each do |thing|
      thing.each do |other_thing|
        puts other_thing['Hash1']
      end
    end
   end

返回以下内容:

Hash1
abcd

efg

hijk

空格是nil 值。我超级难过。有人想试试这个吗?

【问题讨论】:

  • 如果您需要一个函数来处理一组特定的嵌套,请发布您需要处理的数据。发布的答案适用于示例数据

标签: ruby-on-rails arrays ruby hash hash-of-hashes


【解决方案1】:

你是putsing 未定义的变量,没有任何条件检查

以上述数据为例:

problem.each do |arr_item|
  arr_item.each do |hash_key, hash|
    if hash['Hash_2']
      puts hash['Hash_2']
    else
      puts 'N/A'
    end
  end
end

【讨论】:

  • @MikeAdamski 更新,一分钟忘记哈希的对象语法
  • @MikeAdamski 如果解决了您的问题,请标记答案
  • 仍然无法正常工作,为每个 key 返回“N/A”。我仍在尝试使用语法,但没有得到任何结果,如果我得到它,我会回来更新,谢谢!
  • 那么您发布的数据与您正在使用的数据不同
  • 上面的代码非常适合您的示例数据
【解决方案2】:
arr = [{ 'Hash1'=>{ 'Hash_1'=>'abcd', 'Hash_2'=>'abcd', 'Hash_3'=>nil    } },
       { 'Hash2'=>{ 'Hash_1'=>'efg',  'Hash_2'=>'efg',  'Hash_3'=>'efg'  } },
       { 'Hash3'=>{ 'Hash_1'=>'hijk', 'Hash_2'=>nil,    'Hash_3'=>'hijk' } }
      ]

arr.map { |h| h.first.last["Hash_2"] || 'N/A' }
  #=> ["abcd", "efg", "N/A"] 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2022-12-11
    • 1970-01-01
    • 2017-04-03
    • 2016-09-03
    相关资源
    最近更新 更多