Es weil .each
auf einem Hash fehl ergibt das Tupel von Schlüssel und Wert.
hash = {
"Element" => {
"499723" => {
"Name" => "A",
},
"499725" => {
"Name" => "B",
},
}
}
hash["Element"].each do |id|
p id
end
["499723", {"Name"=>"A"}]
["499725", {"Name"=>"B"}]
Daher müssen Sie
hash["Element"].each do |id, value|
# ...
end
verwenden Wenn Sie den Wert
hash["Element"].each do |id, _|
# ...
end
jedoch nicht benötigen, können Sie den Wert halten und den Zugang direkt
hash["Element"].each do |id, value|
h[id] = value["Name"]
end
Eine einfache Lösung in Ihrem Fall ist Enumberable#each_with_object
in Kombination mit der vorherigen Informationen zu verwenden:
hash["Element"].each_with_object({}) do |(id, value), acc|
acc[id] = value["Name"]
end
# => {"499723"=>"A", "499725"=>"B"}
Sie Stimmen auf Ihre Frage bekommen, weil diese durch das Lesen herausgefunden haben könnte [die Dokumentation] (http: // ruby-doc. org/core-2.3.1/Hash.html # method-i-each) für Hash's 'each'. "[Wie viel Forschungsaufwand wird von Stack Overflow-Benutzern erwartet?] (Http://meta.stackoverflow.com/q/261592/128421)" wird erklären, warum. –