Skip to content

检查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 来提高性能。