检查JavaScript数组是否包含另一个数组中的任意或所有值
如前所述,您可以使用Array.prototype.includes()
来检查数组是否包含特定值。但是,如果您想要检查一个数组是否包含另一个数组中的任意或所有值,解决这个问题的方法同样简单。
检查数组是否包含任意值
给定一个values
数组,我们想要检查这些值中是否至少有一个包含在另一个数组arr
中。我们可以使用Array.prototype.some()
和Array.prototype.includes()
来实现。这样,我们可以将values
中的每个值与arr
进行比较,并在至少有一个值被包含时返回true
。
const includesAny = (arr, values) => values.some(v => arr.includes(v));
includesAny([1, 2, 3, 4], [2, 9]); // true
includesAny([1, 2, 3, 4], [8, 9]); // false
检查数组是否包含所有值
将条件更改为检查arr
中是否包含所有values
的值只需要将Array.prototype.some()
替换为Array.prototype.every()
。与之前的逻辑相同,只是现在我们希望在所有值都被包含时返回true
。
const includesAll = (arr, values) => values.every(v => arr.includes(v));
includesAll([1, 2, 3, 4], [1, 4]); // true
includesAll([1, 2, 3, 4], [1, 5]); // false
[!提示]
这些代码片段在处理较大的数组时可能性能较差。如果你正在处理大型数组,你可能需要考虑使用
Set
来提高性能。