Wenn Sie mit haften würde verwenden möchten versuchen Arrays, dann so etwas wie:
arr1 = [['Area1', 12345], ['Area2', 54321]]
arr2 = ['Area1', 33441]
arr1.inject([]){|r,i| r.push(i[0] == arr2[0] ? i.push(arr2[1]) : i)}
In Konsole:
012.351.
2.3.1 :001 > arr1 = [['Area1', 12345], ['Area2', 54321]]
=> [["Area1", 12345], ["Area2", 54321]]
2.3.1 :002 > arr2 = ['Area1', 33441]
=> ["Area1", 33441]
2.3.1 :003 > arr1.inject([]){|r,i| r.push(i[0] == arr2[0] ? i.push(arr2[1]) : i)}
=> [["Area1", 12345, 33441], ["Area2", 54321]]
bei polmiro Antwort sucht, ziehe ich seine map
meiner inject
. Sie sind im Wesentlichen die gleichen, glaube ich. Nur dass map
die Arbeit für Sie erledigt, eine neue array
zu erstellen, während Sie mit inject
die neue array
übergeben müssen. Und map
macht eine implizite push
, während, mit inject
, wiederum müssen Sie die Arbeit selbst tun. Netter Job, Polmiro!
Hier ist die einzeilige Version seiner Antwort (wenn Sie mögen diese Art der Sache):
arr1.map{|a| a[0] == arr2[0] ? a << arr2[1] : a}
Und wieder in der Konsole:
2.3.1 :001 > arr1 = [['Area1', 12345], ['Area2', 54321]]
=> [["Area1", 12345], ["Area2", 54321]]
2.3.1 :002 > arr2 = ['Area1', 33441]
=> ["Area1", 33441]
2.3.1 :003 > arr1.map{|a| a[0] == arr2[0] ? a << arr2[1] : a}
=> [["Area1", 12345, 33441], ["Area2", 54321]]
Scheint wie ein Hash könnte die geeignetere Datenstruktur hier sein. – meagar