Ich versuche, die Schnittwerte zwischen mehreren Arrays zu finden.
zum Beispiel
code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]
Das Ergebnis wäre also 2
Ich weiß, dass Sie dies in PHP mit array_intersect tun können
Ich wollte in der Lage sein, einfach zusätzliches Array hinzuzufügen, damit ich nicht wirklich mehrere Schleifen verwenden möchte
Irgendwelche Ideen ?
Danke, Alex
[1,2,3] & [4,5,6] & [1,2,3]
ein leeres Array zurück.Wenn Sie dies mit einem Array von Arrays unbekannter Länge einfacher machen möchten, können Sie injizieren.
> arrays = [code1,code2,code3] > arrays.inject(:&) # Ruby 1.9 shorthand => [2] > arrays.inject{|codes,x| codes & x } # Full syntax works with 1.8 and 1.9 => [2]
quelle
arrays.inject(:&)
wird in 1.9 nicht funktionieren. Dies wird jedoch funktionierenarrays.inject(:'&')
Array # -Kreuzung (Ruby 2.7+)
Ruby 2.7 führte die Array # -Kreuzungsmethode ein , um sie an die prägnantere Array # & anzupassen .
So kann jetzt
[1, 2, 3] & [2, 3, 4] & [0, 2, 6]
ausführlicher umgeschrieben werden, z[1, 2, 3].intersection([2, 3, 4]).intersection([0, 2, 6]) # => [2] [1, 2, 3].intersection([2, 3, 4], [0, 2, 6]) # => [2]
quelle