Есть ли способ проверить, содержит ли массив A все элементы массива B?
Ruby - содержит ли массив A все элементы массива B
Ответ 1
Это должно работать для того, что вам нужно:
(a & b) == b
		Ответ 2
Вы можете попробовать это
a.sort.uniq == b.sort.uniq
или
(a-b).empty?
И если [1,2,2] != [1,2] в вашем случае вы можете:
a.group_by{|i| i} == b.group_by{|i| i}
		Ответ 3
Вы можете использовать класс Ruby Set:
>> require 'set' #=> true
>> a = [*1..5] #=> [1, 2, 3, 4, 5]
>> b = [*1..3] #=> [1, 2, 3]
>> a.to_set.superset? b.to_set #=> true
Для небольших массивов я обычно делаю то же, что предложил fl00r:
>> (b-a).empty? #=> true
		Ответ 4
Я предпочитаю делать это с помощью: (b - a).blank? # говорит, что b содержится в
Ответ 5
Самый простой способ:
(b-a).empty?
		Ответ 6
Также существует класс Set (часть стандартной библиотеки), который позволит вам просто проверить, является ли B подмножеством A, например
>> a = [1,2,3,4,5]       => [1, 2, 3, 4, 5]
>> b = [3,4,5]           => [3, 4, 5]
>> require 'set'         => true 
>> set_a = a.to_set      => #<Set: {1, 2, 3, 4, 5}> 
>> set_b = b.to_set      => #<Set: {3, 4, 5}> 
>> set_b.subset? set_a   => true
		Ответ 7
Вы можете проверить класс Set в библиотеке Ruby Standard. Метод proper_subset?, вероятно, сделает то, что вы хотите.
Ответ 8
Рубин 2. 6+
 Для этой цели в Ruby введена  difference в 2.6.
Очень быстро, очень читабельно, следующим образом:
a = [1, 2, 3, 4, 5, 6]
b = [1, 2, 3, 4, 5, 6]
a.difference(b).any?
# => false
a.difference(b.reverse).any?
# => false
a = [1, 2, 3, 4, 5, 6]
b = [1, 2, 3]
a.difference(b).any?
# => true
 Надеюсь, что это помогает кому-то!