使用ES6套装,我可以这样做:
let ints = new Set([1,2,3])
console.log(ints.has(3))
并打印true
因为3
在集合中。
但阵列怎么样? E.g。
let coordinates = new Set([[1,1], [1,2], [2,0]])
console.log(coordinates.has([1,2]))
这会打印false
。
As you can see in this CodePen demo
因此,如果没有先将坐标转换为字符串(例如['1,1', '1,2', '2,0']
),我如何处理集合中的数组,就好像数组是可以清除的一样?
答案 0 :(得分:9)
由于Set和Map实例基于===
比较(NaN
除外),因此两个不同的数组永远不会相同,所以您的示例正确导致false
。但是:
var a = [1, 1], b = [1, 2], c = [1, 3];
var s = new Set([a, b, c]);
console.log(s.has(a));
将打印true
。