如何在不维护引用的情况下在任何对象上使用ES6 Hash Map(在Java哈希码中)

时间:2015-02-06 02:34:05

标签: javascript ecmascript-6 io.js

我一直在io.js中试验ES6 Map,并意识到我无法做到以下几点:

var map = new Map()
map.set( {key:"value"}, "some string");
map.get( {key:"value"} ); // undefined. I want "some string"

这是因为{key:“value”} === {key:“value”}为false。

我需要能够将对象用作键,但不需要ACTUAL对象来查找值,就像java HashMap使用hashcode和equals一样。这可能吗?

1 个答案:

答案 0 :(得分:6)

  • 如果缺少对象标识源于序列化 - 反序列化往返,只需给它们一个唯一的ID,然后使用该ID作为密钥
  • 如果您可以确定其余属性是依赖于该子集还是与您的操作无关,则
  • 从其属性的子集计算密钥
  • 实现自己的哈希映射和对象哈希。这可能会对主机对象变得棘手,但对于与JSON兼容的数据应该相当简单
  • 每次获取或设置之前的JSON编码。它效率很低,只适用于JSON可序列化对象。但比以前的选项更容易实现