2016-09-14 2 views
-1

я получаю этот ответ в Ruby:Проверьте, если два или более значений существует в массиве

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

Если эти два массива всегда есть только два элемента, вы можете проверить это просто:

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

, если вы просто хотите проверить, если mstmplid, ostmplid включен в templateid вы должны написать так:

[mstmplid, ostmplid].map(&:to_s).all? { |x| templateid.include? x } 
Смежные вопросы