Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在包含哈希的数组中创建哈希_Ruby_Hash - Fatal编程技术网

Ruby 在包含哈希的数组中创建哈希

Ruby 在包含哈希的数组中创建哈希,ruby,hash,Ruby,Hash,让我先说我刚刚开始学习ruby 我有任何由散列组成的数组,以及相互嵌套的数组。看起来是这样的: people = [ { "John Doe" => { "phone" => "555-555-555", "company" => "Company name", "children" => [ "John", "Jane", "Annamarie" ] }

让我先说我刚刚开始学习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"
    }
  }
]
我如何添加一个新的散列,其中人名作为键,新的散列是值?例如,我想添加“配偶”,因此哈希如下所示:

 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"
    }
  }
]

您可以使用
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”为键的哈希值

    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”的情况。

为什么要在person=>其_数据的哈希周围使用最顶端的数组?@Vasfed这是一个练习的一部分,我是这样做的。最初的问题是在人员级别创建散列,但我想知道如何更深入一层,这是我无法做到的。长话短说,这是给我的,纯粹是假设性的。为什么你需要person=>他们的_数据的哈希周围的最顶端数组?@Vasfed这是一个练习的一部分,是这样给我的。最初的问题是在人员级别创建散列,但我想知道如何更深入一层,这是我无法做到的。长话短说,这是给我的,纯粹是假设。嗨,史蒂夫,谢谢你的回复。然而,我试图在散列中创建一个新的散列,其中johndoe是密钥。或者我误解了你的代码?我的代码在散列“John Doe”中有一个新的散列键/数据。。。我的代码的结果将完全匹配您的“我希望它看起来像这样”代码。如果您对所需内容的描述/示例有误,请告知我。非常感谢您的回复。我还是个新手。感谢您抽出时间回答这个问题。嗨,史蒂夫,谢谢您的回复。然而,我试图在散列中创建一个新的散列,其中johndoe是密钥。或者我误解了你的代码?我的代码在散列“John Doe”中有一个新的散列键/数据。。。我的代码的结果将完全匹配您的“我希望它看起来像这样”代码。如果您对所需内容的描述/示例有误,请告知我。非常感谢您的回复。我还是个新手。我感谢你花时间回答这个问题。