Ich verwende Rails 4.2.7. Ich habe zwei Arrays (arr1 und arr2), die beide meine Modellobjekte enthalten. Gibt es eine Möglichkeit, eine Kreuzung auf beiden Arrays zu machen, wenn ein Objekt von arr1 ein Feld "myfield1" (welches eine Zahl ist) hat, das mit einem Objekt in arr2 übereinstimmt? Beide Arrays haben eindeutige Objektgruppen. Derzeit habe ichIn Rails, wie führe ich einen Schnittpunkt von zwei Arrays basierend auf einem Feld in jedem Objekt in den Arrays?
arr1.each_with_index do |my_object, index|
arr2.each_with_index do |my_object2, index|
if my_object.myfield1 == my_object2.myfield1
results.push(my_object)
end
end
end
aber das scheint mir als etwas ineffizient. Ich denke, es gibt einen einfacheren Weg, um die Ergebnisse zu bekommen, die ich brauche, aber ich bin nicht genug mit Ruby vertraut, um zu wissen, wie es geht.
http://ruby-doc.org/ core-1.9.3/Array.html # method-i-26 – bjhaid
Konvertieren jedes Arrays in einen Hash mit dem Feld als Schlüssel zB: 'hash1 = arr1.each_with_object ({}) {| x, hsh | hsh [x.field] = x}; hash2 = arr2.each_with_object ({}) {| x, hsh | hsh [x.field] = x} 'und tun' (hash1.keys & hash2.keys) .map {| x | hash1 [x] || hash2 [x]} ' – bjhaid