JavaScript中对数组的布尔运算

Pet*_*son 3 javascript arrays ecmascript-6

使用ES6集,我可以这样做:

let ints = new Set([1,2,3])
console.log(ints.has(3))
Run Code Online (Sandbox Code Playgroud)

而且它打印true,因为3 在集合.

但阵列怎么样?例如

let coordinates = new Set([[1,1], [1,2], [2,0]])
console.log(coordinates.has([1,2]))
Run Code Online (Sandbox Code Playgroud)

这打印false.

正如您在此CodePen演示中所看到的

因此,在没有首先将坐标转换为字符串(例如['1,1', '1,2', '2,0'])的情况下,我如何处理集合中的数组,就像数组是可以清除的一样?

Poi*_*nty 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));
Run Code Online (Sandbox Code Playgroud)

将打印true.