Ruby – 数组A是否包含数组B的所有元素

有没有方法来检查数组A是否包含数组B的所有元素?

这应该适合您的需要:

(a & b) == b 

你可以试试这个

 a.sort.uniq == b.sort.uniq 

要么

 (ab).empty? 

如果[1,2,2] != [1,2]在你的情况下你可以:

 a.group_by{|i| i} == b.group_by{|i| i} 

你可以使用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建议的相同:

 >> (ba).empty? #=> true 

我更喜欢这样做: (b - a).blank? #告诉b包含在a中

最简单的方法是:

 (ba).empty? 

还有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_b = b.to_set => # >> set_b.subset? set_a => true 

http://www.ruby-doc.org/stdlib/libdoc/set/rdoc/index.html

您可能想要查看Ruby Standard库中的Set类。 proper_subset? 方法可能会做你想要的。