📌  相关文章
📜  如何在 JavaScript 中检查数组是否包含来自另一个数组的值(1)

📅  最后修改于: 2023-12-03 14:52:21.249000             🧑  作者: Mango

如何在 JavaScript 中检查数组是否包含来自另一个数组的值

在 JavaScript 中,有时我们需要检查一个数组是否包含另一个数组中的值。这个问题的解决方法有多种,下面将介绍其中的几个方法。

方法一:使用 Set

ES6 中的 Set 对象可以用来存储任何类型的唯一值,包括数组。可以通过将数组转换为 Set,然后使用 Set.prototype.has() 方法来检查数组是否包含另一个数组中的值。

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 5];

// 将 arr1 转换为 Set 对象
const set = new Set(arr1);

// 检查 set 是否包含 arr2 中的所有值
const containsAll = arr2.every(value => set.has(value));

console.log(containsAll); // true
方法二:使用数组的 includes() 方法

JavaScript 数组对象有一个名为 includes() 的方法,该方法可以用来检查数组是否包含一个指定的值。可以使用数组的 every() 方法来检查数组中是否包含另一个数组中的每一个值。

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 5];

// 检查 arr1 是否包含 arr2 中的所有值
const containsAll = arr2.every(value => arr1.includes(value));

console.log(containsAll); // true
方法三:使用数组的 indexOf() 方法

JavaScript 数组对象还有一个名为 indexOf() 的方法,该方法可以用来查找一个指定值在数组中的位置。可以使用数组的 every() 方法来检查数组中是否包含另一个数组中的每一个值。

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 5];

// 检查 arr1 是否包含 arr2 中的所有值
const containsAll = arr2.every(value => arr1.indexOf(value) !== -1);

console.log(containsAll); // true

以上是三种常用的方法,你也可以结合一些高级的函数来完成这个问题,比如:

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 5];

// 使用 filter() 和 includes() 检查 arr1 是否包含 arr2 中的所有值
const containsAll = arr2.filter(value => !arr1.includes(value)).length === 0;

console.log(containsAll); // true

无论使用哪种方法,都可以轻松地检查一个数组是否包含另一个数组中的值。