Sada objektů v javascriptu

Chtěl bych mít sadu objektů v Javascriptu. Tedy datovou strukturu, která obsahuje pouze jedinečné objekty.

Obvykle se doporučuje používat vlastnosti, např. myset["key"] = true . Potřebuji však, aby klíče byly objekty. Četl jsem, že Javascript převádí názvy vlastností do řetězců, takže myslím, že nemohu použít myset[myobject] = true .

Mohl bych použít pole, ale pro přidávání, vyhledávání a odebírání položek potřebuji něco lepšího než výkon O(n).

Musí být schopen rozlišit objekty pouze odkazem, takže:

var a = {};
var b = {};

pak oba a a b by mělo být možné přidat, protože se jedná o samostatné objekty.

V podstatě jsem po něčem jako C++ std::set , který může ukládat objekty Javascript. Nějaké nápady?

Odpověď

ES6 poskytuje nativní Set :

let s = new Set();
let a = {};
let b = {};

s.add(a);

console.log(s.has(a));  // true
console.log(s.has(b));  // false