2016-09-06 2 views
1

Ich habe diese beiden ArraysPrüfen auf einzelne Anpassungselemente in zwei verschiedenen Array

arr1 = ["dog", "cat", "bird"]

arr2 = ["fish", "bear", "bird"]

Hinweis, wie das einzige Anpassungselement "bird" von den beiden Anordnungen ist. Ich möchte einen Check finden, der sagt, ob alle Elemente übereinstimmen und wahr sind.

Zum Beispiel funktioniert das nicht arr1.include?(arr2) aber auf der Suche nach Methode, die wird.

Antwort

3

Ich habe einen guten Weg gefunden, dies zu tun:

(arr1 & arr2).any? 

& ist ein logischer Operator, wenn einige Elemente in beiden Arrays vorhanden sind, diese diese Elemente zurück.

any? überprüft, ob Elemente im Array vorhanden sind. Wenn mindestens eins vorhanden ist, gibt es true zurück.

+0

Was tun '&' und 'any?'? –

+0

'&' ist ein logischer Operator, wenn etwas Element in zwei Arrays existiert, gibt es das zurück. 'any?' Überprüfen etwas Element existiert in Array, wenn mindestens eine, gibt es True –

+0

Dank @BartekGladys. Mein Punkt war, dass diese Information in Ihre ordentliche Lösung eingeschlossen werden sollte, um es vollständiger zu machen :) –

1
arr1.any? { |item| arr2.include?(item) } 

Dies überprüft, ob ein Element aus dem ersten Array im zweiten Array enthalten ist.

1

Sie tun dies mit dem Schnittpunkt zwischen zwei Arrays und danach können wir überprüfen, ob es irgendwelche übereinstimmenden Elemente im Ergebnis gibt.

(arr1 & arr2).present? 

In Ihrem Fall haben wir

arr1 = ["dog", "cat", "bird"] 

arr2 = ["fish", "bear", "bird"] 

Ergebnis wie das sein kann:

(arr1 & arr2).present? 

Es wird ['bird'] zurückkehren, so dass sie nicht leer und die Gegenwart? wird wahr zurückkommen.

+0

Welche Version von Ruby hat die Methode 'present?', Die in der 'Array' Klasse enthalten ist? –

+0

kein Methodenfehler, weil 'vorhanden?' Nicht in der Array-Klasse enthalten ist –

+0

Wir haben es in Schienen. Wir können [1,2] .präsentieren? was wieder wahr wird. –

Verwandte Themen