JavaScript 中检查 Set 是否包含数组

使用 has() 方法检查 Set 是否包含数组,例如 set.has(arr)。 必须通过对 has 方法的引用来传递数组以获得可靠的结果。 has 方法测试 Set 中是否存在某个值,如果该值包含在 Set 中则返回 true。

const arr = ['one'];

const set1 = new Set([arr, ['two']]);

console.log(set1.has(arr)); // 👉️ true

我们通过引用 Set.has 方法传递了一个数组,以检查该数组是否包含在 Set 中。

const arr = ['one'];

const set1 = new Set([arr, ['two']]);

console.log(set1.has(['one'])); // 👉️ false

如果我们没有对要检查的数组的引用,则可以使用 for…of 循环遍历 Set 并检查特定数组的存在。

const set1 = new Set([['one', 'two'], ['three']]);

let containsArray = false;
const checkForArr = ['one', 'two'];

for (const arr of set1) {
  if (arr.toString() === checkForArr.toString()) {
    containsArray = true;
    break;
  }
}

console.log(containsArray); // 👉️ true

我们初始化了一个 containsArray 变量并将其设置为 false。 for…of 循环允许我们遍历 Set 并检查特定数组是否包含在其中。

我们使用 Array.toString() 方法来获取包含数组元素的字符串。 仅当两个数组具有相同顺序的相同元素时,这才会评估为真。

console.log(['one', 'two'].toString()); // 👉️ "one,two"

// 👇️ true
console.log(
  ['one', 'two'].toString() === ['one', 'two'].toString()
);

// 👇️ false
console.log(
  ['one', 'two'].toString() === ['two', 'one'].toString()
);

如果找到数组,我们使用 break 关键字退出循环并避免不必要的工作。