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
您可能想要查看Ruby Standard库中的Set类。 proper_subset?
方法可能会做你想要的。