2015-06-08 187 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