使用哈希中的多个数组 - Ruby

时间:2016-11-30 20:16:47

标签: arrays ruby hash

我在尝试弄清楚如何使用ruby中的哈希中的数组时遇到问题。我正在运行一个命令(如果你必须知道的话,在linux上运行最后一个命令),捕获它的输出并尝试将有关每个用户的唯一数据插入到哈希中,每个用户都有自己的数组。示例如下:

hash = {
  "userbob1" => ["Bob User", 10, "10.10.2016"],
  "userjim2" => ["Jim User", 4, "9.16.16"]
}

等等。

我已经能够成功地将一个数组插入一个哈希作为一个整体,但是我如何才能检索该数组的特定值,或者在将它添加到哈希值后为其添加值?

我想象这样的事情:

hash["userbob1"[0]]  #=> "Bob User"

3 个答案:

答案 0 :(得分:1)

您必须按顺序浏览结构的每个部分,并记住该代码的每个部分都是从左到右进行评估:

findUser('adam@gmail.com', function(error, userFound) {
   console.log(userFound);
});

你正在做的是要求hash["userbob1"][0] 当然评估为"userbob1"[0],然后将该值用作哈希键,这是错误的。

只需将每个部分视为可评估和附加的内容:

"u"

答案 1 :(得分:1)

hash = { "userbob1" => ["Bob User", 10, "10.10.2016"],
         "userjim2" => ["Jim User", 4, "9.16.16"] }

arr = hash["userbob1"]
  #=> ["Bob User", 10, "10.10.2016"] 

从数组中检索值

检索索引1处的值。

arr[1]
  #=> 10 

相同
hash["userbob1"][1]

追加数组

使用"cat"

附加数组
arr << "cat"
hash
  #=> {"userbob1"=>["Bob User", 10, "10.10.2016", "cat"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]} 

相同
hash["userbob1"] << "cat"

hash["userbob1"].push("cat")

将数组替换为另一个数组

arr.replace [1,2,3]
hash
  #=> {"userbob1"=>[1, 2, 3], "userjim2"=>["Jim User", 4, "9.16.16"]} 

相同
hash["userbob1"].replace [1,2,3]

hash["userbob1"] = [1,2,3]
  #=> [1,2,3]
hash
  #=> {"userbob1"=>[1, 2, 3], "userjim2"=>["Jim User", 4, "9.16.16"]} 

请注意

arr = [1,2,3]
hash
  #=> {"userbob1"=>["Bob User", 10, "10.10.2016"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]}

(散列不会改变。)

反转数组

arr.reverse!
hash
  #=> {"userbob1"=>["10.10.2016", 10, "Bob User"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]} 

相同
hash["userbob1"].reverse!

请注意

arr.reverse
hash
  #=> {"userbob1"=>["Bob User", 10, "10.10.2016"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]}

散列未更改,因为arr.reverse返回反向数组但不更改它。

答案 2 :(得分:0)

您的语法接近正确。尝试哈希[&#34; userbob1&#34;] [0]