2015-06-08 239 views
0

我是Ruby新手,仍在學習哈希。我試着在這裏尋找其他類似的答案,但無法找到任何完全解答我的問題的東西。哈希中的數組中的Ruby訪問哈希(並添加新的哈希)

我有存儲在哈希結構中的一些數據,我送入一個更新的Neo4j數據庫( so this data structure is important)的腳本:

data = { 
     a: [ 
     { 
      label: 'Person', 
      title: 'Manager', 
      name: 'Mike Waldo' 
     }, 
     { 
      label: 'Person', 
      title: 'Developer', 
      name: 'Jeff Smith', 
     }, 
     ], 

     b: [ 
     { 
      type: 'ABC', 
      source: 'abcde', 
      destination: ['Jeff Dudley', 'Mike Wells', 'Vanessa Jones'] 
     } 
     ] 
    } 

我已經想通了如何返回單個值:

data.each{|x, y| puts y[0][:name]} 

返回:邁克·沃爾多·

兩個問題:

1)如何僅返回數組'a:[]'中的'標籤','標題'和'名稱'?

2)如何在數組'a:[]'而不是':b []'下添加並保存新的散列?

在此先感謝您的幫助!

+0

您可能要檢查O使用'neo4j' /'neo4j-core'寶石,它可以讓你在更高級別上使用Neo4j。我是維護人員之一,如果您有任何問題,我很樂意提供幫助! –

+0

@BrianUnderwood酷,我今天看着它,它看起來像一些偉大的東西!並感謝提供,我實際上有一個[有點相關的問題。](http://stackoverflow.com/questions/30770914/how-do-i-create-a-neo4j-relationship-via-the-rails-控制檯) – Chris

+0

太棒了,看起來像我的同事克里斯擊敗了我! ;)我加了一點,雖然 –

回答

0

您可以爲特定的鍵返回值(:一)

data[:a] 
# => [{:label=>"Person", :title=>"Manager", :name=>"Mike Waldo"}, {:label=>"Person", :title=>"Developer", :name=>"Jeff Smith"}] 

如果您需要保存的價值:一個哈希,所以你只需要使用

data[:a] << {:label => "new label", :name => "new name", :titles => "new title"} 
# => [{:label=>"Person", :title=>"Manager", :name=>"Mike Waldo"}, {:label=>"Person", :title=>"Developer", :name=>"Jeff Smith"}, {:label=>"new label", :name=>"new name", :titles=>"new title"}] 

順便說一句:您的命令(數據。每個{| X,Y |把Y [0] [:名字]})剛剛返回名稱值拳頭散,如果你需要的所有的所有名稱hashe可以使用

data.each do |k, a| 
    a.each do |h| 
    puts h[:name] 
    end 
end 
+0

數據[:a]!那是我沒有得到的。謝謝您的幫助! – Chris