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存储的是对数组的引用而不是内容。
您可以子类化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 backRun Code Online (Sandbox Code Playgroud)