检查一个集合是否包含一个数组
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