Ruby: Сравнить, если массив содержит другой массив

как я могу сравнить, содержит ли массив строк меньший массив строк в Ruby?

например

a=["1","2","3","4","5"]
b=["2","3"]

теперь я хочу проверить, содержит ли a b и получить истину / ложь

Спасибо.

вы можете проверить с помощью (a & b) == b, он вернет логическое значение true / false

Gagan Gami 10.08.2018 12:33

@GaganGami нет, это неверно; & сжимает дубликаты, что приводит к странному [1, 1] & [1, 1] == [1, 1] #⇒ false, потому что на удивление это [1, 1] & [1, 1] == [1].

Aleksei Matiushkin 10.08.2018 12:51

@mudasobwa: отметил, спасибо

Gagan Gami 10.08.2018 14:39
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
3
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наиболее распространенный подход -

(b - a).empty?

Однако у него есть проблемы с уникальными элементами. Чтобы определить, включает ли a элементы все из b, следует:

a_copy = a.dup
b.all? { |e| a_copy.delete e }
# or
b.all?(&a_copy.method(:delete))

Спасибо, решил с b.all? { |x| a.include(x) }

Engin Topuzoglu 10.08.2018 12:59

@EnginTopuzoglu еще раз, это не сработает, если массивы могут содержать дубликаты.

Aleksei Matiushkin 10.08.2018 13:01

Ясно, спасибо, они не содержат дубликатов, но могут, поэтому я изменил его на ваш код, все еще работаю

Engin Topuzoglu 10.08.2018 13:33

Другие вопросы по теме