我一直在 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"} 是假的。
我需要能够使用一个对象作为键,但不需要 ACTUAL 对象来查找值,就像 java HashMap 如何使用哈希码和 equals 一样。这可能吗?
最佳答案
- 如果缺乏对象身份源于序列化-反序列化往返,只需给他们一个唯一的 ID,并使用该 ID 作为 key
- 如果您可以确定其余属性取决于该子集或与您的操作无关,则根据其属性的子集计算键
- 实现您自己的散列映射和对象散列。这对于宿主对象来说可能会很棘手,但对于兼容 JSON 的数据应该相当简单
- 在每次获取或设置之前进行 JSON 编码。它效率很低,并且只适用于 JSON 可序列化对象。但比之前的选项更容易实现
关于javascript - 如何在不维护引用的情况下在对象上使用 ES6 HashMap (在 Java 哈希码中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28357647/