2017-07-01 3 views
1

Ich habe diese Frage:Erstellen neue Array mit Hash-Schlüsseln und Werten in Ruby

die Familie von Hash-Mitgliedern gegeben, mit Tasten, wie der Titel und ein Array von Namen als die Werte, die Ruby verwenden gebaut in der Methode zu sammeln unmittelbare Familienmitglieder ("Brüder" und "Schwestern") nur in eine neue Array.

Mit diesem Hash:

family = { 
    uncles:["bob", "joe", "steve"], 
    sisters: ["jane", "jill", "beth"], 
    brothers: ["frank", "rob", "david"], 
    aunts: ["mary", "sally", "susan"] 
} 

Wie mache ich das? Ich bin nicht einmal sicher, welche eingebaute Methode ich verwenden muss. Ich bin übrigens ein absoluter Anfänger in Ruby.

Ich habe dies:

new_family = Array.new 
new_family = family.values_at(:brothers, :sisters) 
p new_family 

Was gibt mir:

[["frank", "rob", "david"], ["jane", "jill", "beth"]] 

Aber ich bin nicht sicher, ob ich das richtig tue? Ich habe das Gefühl, dass ich die Frage nicht vollständig verstehe.

+1

Fügen Sie einfach 'flatten' am Ende hinzu (zB 'new_family = family.values_at (: brothers,: sisters) .flatten'. BTW Sie brauchen' new_family = Array nicht .neu'. – Gerry

Antwort

3

Es gibt viele verschiedene Möglichkeiten, wie Sie dies tun könnte, könnte man einfach etwas tun:

new_family = family[:brothers] + family[:sisters] 

Oder wie Sie oben haben:

new_family = family.values_at(:brothers, :sisters).flatten 
1

Hier ist ein anderes:

new_family = [:brothers, :sisters].flat_map(&family.method(:[])) 
#=> ["frank", "rob", "david", "jane", "jill", "beth"] 
+1

'.flat_map (& family.method (: []))' :) – mudasobwa

+0

@mudasobwa Schön! Ich mag das besser, also werde ich meine Antwort aktualisieren, danke. – Gerry

Verwandte Themen