2017-12-28 18 views
2

Ich habe eine Reihe von Hashes als;Ruby, erstellen Array ohne Schlüsselwerte aus bestehenden

[{"price" => "123", "amount" => "987"}, {"price" => "432", "amount" => "13"}] 

Ich möchte Array von Hashes als erstellen;

[["123", "987"], ["432", "13"]] 

Ich habe pluck und hash.map(&:first).map(&:last) versucht

konnte ich nicht erreichen, was ich zu tun versuchen.

Antwort

4

Sie können in jedem Hash die Schlüsselwerte zugreifen, indem Hash#values mit:

array_of_hash_objects = [{"price" => "123", "amount" => "987"}, {"price" => "432", "amount" => "13"}] 

p array_of_hash_objects.map(&:values) 
# [["123", "987"], ["432", "13"]] 

Wenn Rails verwenden, dann denke ich, Sie zupfen aber vorbei die benötigten Attributwerte verwenden können, möglicherweise Preis und Menge:

Model.query.pluck(:price, :amount) 

Hinweis Abfrage ist die Methode, die Sie verwenden, um die Daten zu erhalten.

+0

Also, wie kann ich verstehen, wenn die Reihenfolge korrekt ist? –

+0

Was du passierst, bekommst du. Die Reihenfolge im Hash ist die Reihenfolge des resultierenden Arrays. –

+0

'hash.map (&: values)' funktioniert perfekt. Aber Sie sagten, dass die Reihenfolge der resultierenden Arrays abweichen kann? So kann es "[[" 123 "," 987 "], [" 432 "," 13 "]] oder' [["987", "123"], ["13", "432"]] sein '. Aber mein Array von Hashes ist '[{" price "=>" 123 "," amount "=>" 987 "}, {" price "=>" 432 "," amount "=>" 13 "}]'. Fehle ich etwas? –

Verwandte Themen