JavaScript是否具有集合数据结构的实现?

Tim*_*ijk 33 javascript set data-structures

我正在寻找一个在JavaScript中设置数据结构的体面实现.它应该能够支持纯JavaScript对象的元素.

到目前为止,我只找到了Closure Library的结构.但是我不喜欢它修改我的数据的事实.

Cir*_*四事件 22

ECMAScript 6有它

规格:http://www.ecma-international.org/ecma-262/6.0/#sec-set-constructor

用法:https://github.com/lukehoban/es6features#map--set--weakmap--weakset

例:

var s = new Set()
s.add("hello").add("goodbye").add("hello")
s.size === 2
s.has("hello") === true
Run Code Online (Sandbox Code Playgroud)

为没有支持的浏览器实现它的模块:https://github.com/medikoo/es6-set

  • 这不适用于 JS 对象。对象被保留作为参考。具有相同属性值的对象将被视为两个对象并添加到 Set 中。 (2认同)

Tim*_*own 11

你可以围绕我的jshashtable提供的哈希表的键构建一个简单的包装器.我有一个人在某个地方敲门,我稍后会挖掘出来.

UPDATE

我已经完成并测试了HashSet的实现,并将其上传到GitHub上的jshashtable项目.您可以下载查看来源.

var s = new HashSet();
var o1 = {name: "One"}, o2 = {name: "Two"};
s.add(o1);
s.add(o2);
s.values(); // Array containing o1 and o2
Run Code Online (Sandbox Code Playgroud)

  • 你能解释你的库如何计算对象哈希码吗? (2认同)