2016-09-14 52 views
-1

存在我得到在紅寶石這樣的響應:檢查兩個或多個值中的陣列

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

第一個應該是#{mstmplid},第二個應該是#{ostmplid}。我想檢查這個數組是否包含以下函數的這兩個值:

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

很遺憾templateid.all?與templateid.any相同嗎?所以它會檢查是否有任何指定的值在數組中。我如何檢查兩個值是否在那裏?

+0

請澄清您的要求。你真的只是_「想檢查這個數組是否包含這兩個值」_?元素順序是重要的還是元素的數量? – Stefan

+1

'puts'通常在一個新行上打印每個元素。 –

+0

'[「10001」,「10404」] == [「#{mstmplid}」,「#{ostmplid}」]'' –

回答

3

如果這兩個數組總是有僅2元,你可以通過檢查:

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

,如果你只是要檢查是否包含在templateidmstmplid, ostmplid你應該這樣寫:

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