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