Ich bin neu in der Programmierung und verwende Ruby, um mit Syntax und Kontrollfluss vertraut zu werden.Finden Sie alle maximalen Werte in einem Array von Hashes und speichern Sie sie dann in einem separaten Array. Ruby
Das Programm, an dem ich gerade arbeite, möchte, dass ich den DVD-Namen einstelle, der die längste Spielzeit hat. Hier ist mein Code:
dvds = [
{
:dvd_name=>"x-men",
:dvd_playing_time=>549,
:times_played=>9.0
},
{
:dvd_name=>"Pi",
:dvd_playing_time=>549,
:times_played=>6.0
}
]
Beide Hashes haben dvd_playing_time
von 549
, so möchte ich sowohl "x-men"
und "Pi"
in einem Array gespeichert. Ich habe versucht max_by
, aber es gibt nur eine dvd_name
zurück.
dvds.max_by { |length| length[:dvd_playing_time]}[:dvd_name]
Jede Hilfe, die Sie zur Verfügung stellen können, ist fantastisch!
Es wäre klarer gewesen, den Schlüssel ': dvd_length' ': dvd_playing_time' gemacht zu haben, da einige Leser, vor allem diejenigen, für die Englisch eine zweite Sprache ist, denken, dass Sie sich auf': times_played' beziehen. Außerdem wäre es besser gewesen, die Werte von ': times_played' für die beiden Hashes unterschiedlich zu machen. –
Cary Swoveland, vielen Dank für Ihren Vorschlag. Ich werde mein Symbol modifizieren, um klarer zu sein, als es jetzt ist. – aprogrammer
Ich habe bearbeitet: dvd_length zu: dvd_playing_time und auch geändert: times_played Werte unterschiedlich. – aprogrammer