2017-02-13 4 views
0

Ich Rails 5 und Ruby 2.4 Ich habe ein Array von Objekten verwendet, wobei jeder Gegenstand die FelderWie entferne ich doppelte Attribute aus einem Array basierend auf Feldern der Objekte im Array?

name 
member_id 

Ich möchte durch meine Array scannen und doppelte Elemente zu beseitigen, taht ist, Elemente, deren Felder „Name "und" member_id "stimmen bereits mit etwas anderem im Array überein. Wie mache ich das? Ich weiß, ich prüfen, ob das Array bereits ein Element enthält, die von

results.any?{|a| a.name.eql?(name) && a.member_id == member_id} 

mit Aber ich bin nicht sicher, wie die oben zu verwenden, um Duplikate zu beseitigen. Wenn Dubletten vorhanden sind, möchte ich weiterhin eines der Elemente mit der eindeutigen Kombination name/member_id beibehalten.

+0

Es würde helfen, wenn Sie Eingabedaten und Ihre erwartete Ausgabe bereitstellen würden. Bitte lesen Sie "[mcve]". –

Antwort

0

Rubys uniq ist eine Option. Zum Beispiel nehme ich die Sub-Array-Elemente im folgenden durch ihre Werte bei Subindizes 0 und 2. Ich schaffe dieser Elemente und verwenden Sie es mit uniq ‚s Block Option umfasste ein Vergleichsobjekt kann vergleichen wollen:

a = [ 
    ['one', 1, 1], 
    ['two', 2, 2], 
    ['one', 2, 1], 
    ['two', 2, 2], 
    ['one', 1, 2], 
] 

p a.uniq { |elt| [elt[0], elt[2]] } # => [["one", 1, 1], ["two", 2, 2], ["one", 1, 2]] 
Verwandte Themen