2016-11-30 44 views
1

我有一個問題,試圖找出如何使用哈希中的散列內的數組。我正在運行一個命令(如果你必須知道的話,在linux上的最後一個命令),捕獲它的輸出並試圖將出現在這個日誌中的每個用戶的唯一數據插入散列中,每個用戶都有自己的數組。示例如下:使用哈希中的多個數組 - Ruby

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

等等。

我已經能夠成功地插入一個數組哈希作爲一個整體,但我將如何去獲取該數組的特定值,或之後我把它添加到哈希添加值呢?

我想像這樣的事情:

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

你需要糾正你的例子。對於''userjim1'','Bob User'和'10.10.2016'不是有效的Ruby對象。我希望你想''「Bob用戶」,10,「10.10.2016」]和''userjim2「'類似。 –

回答

1

你必須通過結構順序的每一個部分進行導航,並記住代碼的每個部分進行評估,因爲它去左至右:

hash["userbob1"][0] 

什麼你做的是要求"userbob1"[0]當然,計算結果爲"u",然後該值作爲哈希鍵,這是不對的。

試想每個部分的東西,你可以評估和追加到:

hash 
hash["userbob1"] 
hash["userbob1"][0] 
+0

謝謝你們兩位!大多數咖啡因的運行量都很低!我的最後一個問題是,如果我爲每個用戶的散列添加了一個空數組,是否有一種方法可以使用array.push方法爲其添加值? – northdakota2170

+0

嘗試在'irb'中評估這些事物以瞭解它們的行爲。如果你正在引用一個數組,你可以對數組做任何事情:'hash [「userbob1」] [0] <<'另一個字段''例如,'<<'是別名'push'。 – tadman

0

你的語法是接近正確。嘗試散列[ 「userbob1」] [0]

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返回反轉的數組,但不會改變它。

+0

感謝您的詳細分解!非常有幫助! – northdakota2170