检查 Set 是否包含 JavaScript 中的数组

检查一个集合是否包含一个数组

Check if a Set contains an Array in JavaScript

使用该has()方法检查 a 是否Set包含数组,例如
set.has(arr).

数组必须通过引用传递给has()方法以获得可靠的结果。

has方法测试 a 中是否存在值,Set并返回true
该值是否包含在 中
Set

索引.js
const arr = ['one']; const set1 = new Set([arr, ['two']]); console.log(set1.has(arr)); // 👉️ true

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

请注意,数组必须通过引用传递给has()方法。按值传递数组是行不通的。

索引.js
const arr = ['one']; const set1 = new Set([arr, ['two']]); console.log(set1.has(['one'])); // 👉️ false
这是因为我们正在检查的数组位于内存中的不同位置并且具有完全不同的引用。

如果您没有对要检查的数组的引用,请使用
for…of
循环遍历
Set
并检查数组是否存在。

索引.js
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
方法获取包含数组元素的字符串。
这只会评估
true两个数组是否具有相同顺序的相同元素。

索引.js
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关键字退出循环并避免不必要的工作。

如果有一种方法可以让您获得对数组的引用,那么使用该方法的性能会更高,尤其是当数组接近 的末尾或根本不包含在 中时。 has()Set Set