JavaScript 中的元组集?

Dav*_*XYZ 11 javascript tuples set ecmascript-6

在 JavaScript 中实现Set坐标的最佳方法是什么?我希望能够做这样的事情:

let s=new Set();
s.add([1,1]);
if (s.has([1,1])) // false, since these are different arrays
Run Code Online (Sandbox Code Playgroud)

上面的方法不起作用,因为它Set存储的是对数组的引用而不是内容。

hev*_*ev1 5

您可以子类化Set以获得更大的灵活性。

class ObjectSet extends Set{
  add(elem){
    return super.add(typeof elem === 'object' ? JSON.stringify(elem) : elem);
  }
  has(elem){
    return super.has(typeof elem === 'object' ? JSON.stringify(elem) : elem);
  }
}
let s=new ObjectSet();
s.add([1,1]);
console.log(s.has([1,1]))
console.log(s.has([1,2,3]));
console.log([...s]);
console.log([...s].map(JSON.parse));//get objects back
Run Code Online (Sandbox Code Playgroud)