2016-04-20 19 views
0

Ich brauche Werte aus einem Array von Hashes zu extrahieren:Extract Werte aus einem Array von Hashes

data = 
[{:diaria_media=>"103.58908136482939632545931759", 
    :room_night=>"1143", 
    :valor_periodo=>"118402.320000"}, 
{:diaria_media=>"307.46792079207920792079207921", 
    :room_night=>"101", 
    :valor_periodo=>"31054.260000"}, 
{:diaria_media=>"313.000000", 
    :room_night=>"9", 
    :valor_periodo=>"2817.000000"}, 
{:diaria_media=>"0.0", 
    :room_night=>"7", 
    :valor_periodo=>"0.0"}, 
{:diaria_media=>"4.4630434782608695652173913043", 
    :room_night=>"414", 
    :valor_periodo=>"1847.700000"}, 
{:diaria_media=>"150.89382627422828427853553482", 
    :room_night=>"1393", 
    :valor_periodo=>"210195.100000"}, 
{:diaria_media=>"221.11425992779783393501805054", 
    :room_night=>"554", 
    :valor_periodo=>"122497.300000"}, 
{:diaria_media=>"36.919200", 
    :room_night=>"25", 
    :valor_periodo=>"922.980000"}, 
{:diaria_media=>"31.967530864197530864197530864", 
    :room_night=>"81", 
    :valor_periodo=>"2589.370000"}, 
{:diaria_media=>"0", 
    :room_night=>"0", 
    :valor_periodo=>"0.000000"}] 

Ich brauche all :room night Felder zu erhalten und die Werte hinzuzufügen. Was ist der beste Weg, um das zu erreichen?

+0

Willkommen bei Stack-Überlauf. Verwenden Sie Formatierung, um den Text Ihrer Frage besser lesbar zu machen. Lesbarkeit hilft uns, Ihnen zu helfen, und hilft denen, die in Zukunft nach einer ähnlichen Lösung suchen. Grammatik und Lesbarkeit sind bei Stack Overflow sehr wichtig. Wenn man sich nicht die Zeit nimmt, sein Bestes zu geben, um die Frage richtig zu beantworten, werden viele ausgeschaltet, die normalerweise helfen wollen. Bitte lesen Sie https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/ zusammen mit Links auf dieser Seite, da es alles gut erklärt. –

+0

Ich habe die Frage stark bearbeitet, um mich auf das eigentliche Problem zu konzentrieren, das das OP lösen muss. –

+0

@ taiuan-pagini Wie ist der Status Ihrer Frage? –

Antwort

-1

Erstens: Es ist nicht nett, um Hilfe zu bitten und die Frage wie Sie zu formatieren. Sekunde: Die Frage hat nichts mit Rails oder mit Savon zu tun. Dies ist eine reine Ruby-Frage. Die Lösung scheint mir einfach. Sie iterieren Ihr Array und fassen die Zahlen für jede Taste: room_night Zum Beispiel wie folgt aus:

nights = 0 
data.each do |booking| 
    nights += booking[:room_night].to_i 
end 
print "nights=#{nights}\n" 

Wenn Sie gehen funktional ist es noch einfacher:

nights = data.map{|e| e[:room_night].to_i}.reduce(:+) 

und fertig!

Als Bonus habe ich ein ausführbares Skript in Pastbin https://pastebin.com/29nMTYrK

Verwandte Themen