【问题标题】:Iterating through array of hashes遍历哈希数组
【发布时间】:2016-09-03 10:42:01
【问题描述】:

我有一个这样的哈希。

h = {"name"=>"United States House of Representatives TX-21",
     "divisionId"=>"ocd-division/country:us/state:tx/cd:21",
     "levels"=>["country"],
     "roles"=>["legislatorLowerBody"],
     "officials"=>[{"name"=>"Lamar Smith",
                    "address"=>[
                      {"line1"=>"2409 rayburn house office building",
                       "city"=>"washington",
                       "state"=>"DC",
                       "zip"=>"20515"
                      }
                    ],
                    "party"=>"Republican",
                    "phones"=>["(202) 225-4236"],
                    "urls"=>["http://lamarsmith.house.gov/"],
                    "photoUrl"=>"http://...",
                    "channels"=>[
                      {"type"=>"Facebook", "id"=>"LamarSmithTX21"},
                      {"type"=>"Twitter", "id"=>"LamarSmithTX21"},
                      {"type"=>"YouTube", "id"=>"lamarsmithtexas21"}
                    ]
                   }
                  ]
    }

我正在尝试执行 if 语句,如果 levels 哈希 == country,则将此数组推送到另一个名为 @nationalOffices 的数组中。问题是级别哈希的值是一个数组。我不知道该怎么做。任何建议将不胜感激。

【问题讨论】:

  • 我重新格式化了你的哈希(不是数组),以便可以理解,但我对你的最后一段没有做任何事情,因为我不明白。当你举一个例子时,你应该做三件事: 1. 把例子的大小减少到最小的,以表明你的观点; 2. 显示您预期或期望的输出;和 3. 为每个输入对象分配一个变量(例如,h = { ... },就像我在上面所做的那样),以便读者可以在答案和 cmets 中引用这些变量(这里是 h),而无需定义它们。
  • 您在这里以令人困惑的方式使用单词数组。这是数组中许多的哈希值吗?当您说“将这个数组推入另一个数组”时,您的意思是将这个 hash 推入@nationalOffices 吗?提供有关您正在使用的实际数据的更多背景信息。

标签: arrays ruby loops hash iteration


【解决方案1】:

您可以通过深入了解哈希来访问它,例如array[0]["levels"] 。您可能必须将此 API 响应保存在一个变量中,然后按照自己的方式进行操作。
如果你想了解更多关于哈希和数组的知识,这是一个很好的教程:http://www.tutorialspoint.com/ruby/ruby_hashes.htm

【讨论】:

    【解决方案2】:

    @nationalOffices

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      相关资源
      最近更新 更多