2016-09-14 6 views
-1

ich diese Antwort in Ruby:Überprüfen Sie, ob zwei oder mehr Werte existieren in einem Array

puts templateid --> ["10001", "10404"] 

Die erste sollte sein # {mstmplid} und der zweite sollte # {ostmplid} sein. Ich möchte prüfen, ob dieses Array diese zwei Werte mit der folgenden Funktion enthält:

if templateid.all? { |x| ["#{mstmplid}", "#{ostmplid}"].include?(x) } 
    puts "OK" 
end 

Leider templateid.all? ist das gleiche mit templateid.any? So wird überprüft, ob einer der angegebenen Werte im Array enthalten ist. Wie kann ich prüfen, ob beide Werte vorhanden sind?

+0

Bitte klären Sie Ihre Anforderungen. Wollen Sie wirklich nur "" überprüfen, ob dieses Array diese beiden Werte enthält "_? Ist die Reihenfolge der Elemente wichtig oder die Anzahl der Elemente? – Stefan

+1

'puts' druckt normalerweise jedes Element in einer neuen Zeile. –

+0

Wie wäre es mit '[" 10001 "," 10404 "] == [" # {mstmplid} "," # {ostmplid} "]' –

Antwort

3

Wenn diese zwei Arrays immer nur zwei Elemente haben, können Sie es überprüfen von:

templateid.sort == [mstmplid, ostmplid].map(&:to_s).sort 

wenn Sie wollen nur überprüfen, ob mstmplid, ostmplid in templateid enthalten Sie so schreiben sollte:

[mstmplid, ostmplid].map(&:to_s).all? { |x| templateid.include? x } 
Verwandte Themen