簡體   English   中英

Ruby在哈希內的數組內訪問哈希(並添加新哈希)

[英]Ruby access hash within an array within a hash (and add new hash)

我是Ruby的新手,仍然在學習哈希。 我試圖在這里尋找其他類似的答案,但找不到任何能夠完全回答我的問題的東西。

我將一些數據存儲在散列結構中,然后將其輸入到更新Neo4j數據庫的腳本中( 因此此數據結構很重要 ):

    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]}

返回:Mike Waldo

兩個問題:

1)如何僅從數組“ a:[]”返回“標簽”,“標題”和“名稱”?

2)如何在數組'a:[]'下而不在':b []'下添加和保存新的哈希?

先謝謝您的幫助!

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

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

而且,如果您需要將值保存到:a哈希中,則只需使用

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"}]

順便說一句:您的命令(data.each {| x,y |放入y [0] [:name]})僅在需要哈希的所有名稱時才返回拳頭哈希的名稱值

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM