Проверить наличие нескольких элементов массива с помощью .include? - Рубиновый новичок Есть ли лучший способ написать это: if myarray.include? 'val1' || myarray.include? 'val2' || myarray.include? 'val3' || myarray.include? 'val4' Ответ 1 Использование набора пересечений (Array #: &): (myarray & ["val1", "val2", "val3", "val4"]).present? Вы также можете выполнить цикл (any? будет останавливаться при первом вхождении): myarray.any? { |x| ["val1", "val2", "val3", "val4"].include?(x) } Это нормально для небольших массивов, в общем случае лучше иметь предикаты O (1): values = ["val1", "val2", "val3", "val4"].to_set myarray.any? { |x| values.include?(x) } С Ruby >= 2.1 используйте Set # intersect: myarray.to_set.intersect?(values.to_set)
Ответ 1 Использование набора пересечений (Array #: &): (myarray & ["val1", "val2", "val3", "val4"]).present? Вы также можете выполнить цикл (any? будет останавливаться при первом вхождении): myarray.any? { |x| ["val1", "val2", "val3", "val4"].include?(x) } Это нормально для небольших массивов, в общем случае лучше иметь предикаты O (1): values = ["val1", "val2", "val3", "val4"].to_set myarray.any? { |x| values.include?(x) } С Ruby >= 2.1 используйте Set # intersect: myarray.to_set.intersect?(values.to_set)