📌  相关文章
📜  检查数组是否包含所有元素 javascript (1)

📅  最后修改于: 2023-12-03 15:40:34.371000             🧑  作者: Mango

检查 JavaScript 数组是否包含所有元素

在 JavaScript 中,检查数组是否包含所有元素是一个常见的问题。本文将介绍几种方法来解决这个问题。

使用 every 方法

every 方法可以让我们检查数组中的所有元素是否都满足一个条件。我们可以使用它来检查数组是否包含所有元素。

const array1 = [1, 2, 3, 4, 5];
const array2 = [1, 2, 3, 4, 5, 6];

const containsAll1 = (arr, values) => values.every(val => arr.includes(val));
console.log(containsAll1(array1, [1, 2, 3])); // true
console.log(containsAll1(array2, [1, 2, 3])); // true
console.log(containsAll1(array2, [1, 2, 3, 7])); // false

以上示例中,我们定义了一个名为 containsAll1 的函数。它接受两个参数:一个数组 arr 和一个包含要检查的值的数组 values。

在函数中,我们使用了 every 方法和 includes 方法。every 方法遍历每个值并检查它们是否都包含在 arr 中。includes 方法用于检查每个值是否包含在 arr 中。最后,我们得到了一个布尔值来表示数组是否包含所有元素。

使用 Set 对象

Set 对象是 ES6 引入的新数据类型。它可以存储任何类型的唯一值。我们可以使用 Set 对象来检查数组是否包含所有元素。

const array1 = [1, 2, 3, 4, 5];
const array2 = [1, 2, 3, 4, 5, 6];

const containsAll2 = (arr, values) => {
  const set = new Set(arr);
  return values.every(val => set.has(val));
};

console.log(containsAll2(array1, [1, 2, 3])); // true
console.log(containsAll2(array2, [1, 2, 3])); // true
console.log(containsAll2(array2, [1, 2, 3, 7])); // false

以上示例中,我们定义了一个名为 containsAll2 的函数,它接受两个参数:一个数组 arr 和一个包含要检查的值的数组 values。

在函数中,我们创建了一个 Set 对象,并将数组 arr 中的所有元素添加到集合中。然后,我们使用了 every 方法遍历每个值并检查它们是否都包含在集合中。如果所有值都包含在集合中,我们就得到了一个布尔值来表示数组是否包含所有元素。

使用 for...of 循环

我们还可以使用 for...of 循环来检查数组是否包含所有元素。

const array1 = [1, 2, 3, 4, 5];
const array2 = [1, 2, 3, 4, 5, 6];

const containsAll3 = (arr, values) => {
  for (const val of values) {
    if (!arr.includes(val)) {
      return false;
    }
  }
  return true;
};

console.log(containsAll3(array1, [1, 2, 3])); // true
console.log(containsAll3(array2, [1, 2, 3])); // true
console.log(containsAll3(array2, [1, 2, 3, 7])); // false

以上示例中,我们定义了一个名为 containsAll3 的函数,它接受两个参数:一个数组 arr 和一个包含要检查的值的数组 values。

在函数中,我们使用 for...of 循环遍历每个值并检查它们是否都包含在 arr 中。如果有任何一个值不包含在 arr 中,我们就可以返回一个布尔值 false,表示数组不包含所有元素。

以上是三种检查 JavaScript 数组是否包含所有元素的方法。选择哪种方法取决于您的个人喜好和特定的应用场景,但这些方法都可以帮助您快速准确地解决这个问题。