【问题标题】:Creating a hash inside an array that contains hashes在包含哈希的数组中创建哈希
【发布时间】:2016-04-07 21:29:31
【问题描述】:

让我先说我刚刚开始学习 ruby​​...

我有任何由散列组成的数组,以及相互嵌套的数组。它看起来像这样:

 people =
[
  {
    "John Doe" => {
      "phone" => "555-555-555",
      "company" => "Company name",
      "children" => [
        "John",
        "Jane",
        "Annamarie"
      ]
    },
    "Jane Smith" => {
      "phone" => "555-555-5555",
      "company" => "company name",
      "children" => [
        "Steven"
      ]
    }
  }
]

我将如何添加一个新的散列,其中人的名字作为键,新的散列是值?例如。我想添加“配偶”,所以哈希看起来像这样:

people =
[
  {
    "John Doe" => {
      "phone" => "555-555-555",
      "company" => "Company name",
      "children" => [
        "John",
        "Jane",
        "Annamarie"
      ],
      "spouse" => "Jane Doe"
    },
    "Jane Smith" => {
      "phone" => "555-555-5555",
      "company" => "company name",
      "children" => [
        "Steven"
      ],
      "spouse" => "John Smith"
    }
  }
]

【问题讨论】:

  • 为什么你需要在你的哈希周围使用 person=>their_data 的最顶层数组?
  • @Vasfed 这是练习的一部分,它是以这种方式给我的。最初的问题是关于在人员级别创建哈希,但我想弄清楚如何更深入一层,但我无法做到。长话短说,这是给我的,纯属假设。

标签: ruby hash


【解决方案1】:

您可以使用select 来获取以“John Doe”为键的哈希...

    search_user = "John Doe"
    person = people.select{|p| p.has_key?(search_user)}.first
    person[search_user]['spouse'] = "Jane Doe" if person

最后一行if person的原因是为了处理没有找到“John Doe”的情况。

【讨论】:

  • 您好史蒂夫,感谢您的回复。但是,我正在尝试在 John Doe 是键的散列中创建一个新的散列。还是我误解了你的代码?
  • 我的代码在哈希“John Doe”中有一个新的哈希键/数据......我的代码结果将与您的“我希望它看起来像这样”代码完全匹配。如果您对所需内容的描述/示例有误,请告诉我。
  • 非常感谢您的回复。我对此还是很陌生。感谢您抽出宝贵时间回答这个问题。
猜你喜欢
  • 1970-01-01
  • 2011-04-20
  • 2011-06-14
  • 2017-04-28
  • 1970-01-01
  • 2013-12-20
  • 2017-04-13
  • 2011-09-20
  • 1970-01-01
相关资源
最近更新 更多