我在尝试弄清楚如何使用ruby中的哈希中的数组时遇到问题。我正在运行一个命令(如果你必须知道的话,在linux上运行最后一个命令),捕获它的输出并尝试将有关每个用户的唯一数据插入到哈希中,每个用户都有自己的数组。示例如下:
hash = {
"userbob1" => ["Bob User", 10, "10.10.2016"],
"userjim2" => ["Jim User", 4, "9.16.16"]
}
等等。
我已经能够成功地将一个数组插入一个哈希作为一个整体,但是我如何才能检索该数组的特定值,或者在将它添加到哈希值后为其添加值?
我想象这样的事情:
hash["userbob1"[0]] #=> "Bob User"
答案 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]