在昨天的工作中,遇到这样一个需求:

如何判断一个数组是否完全被另外一个数组包含(一个数组的所有元素都出现在另外一个数组中)

查看了Ruby基础库,没有发现可以用的方法。 ( 注: Array 的 include? 方法只能作用于单个元素)

OK, 既然如此,我们可以自己实现类似的方法。

第一种方式: 采用集合交集的思路,只需判断两个数组的交集是否等于待比较的数组。

a1 = [1,2,3,4]
a2 = [1,2,3]
a1 & a2 == a2
=> true

以上代码,结果为true,表示 a1 包含 a2 ; 如果为 false,表示不包含。

第二种方式: 使用数组之差来判断,需要使用待比较数组减去另外数组,判断结果是否为空。

a1 = [1,2,3,4]
a2 = [1,2,3]
(a2-a1).empty?
=> true

以上代码,结果为true,表示 a1 包含 a2 ; 如果为 false,表示不包含。