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

标签 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"} 是假的。

我需要能够使用一个对象作为键,但不需要 ACTUAL 对象来查找值,就像 java HashMap 如何使用哈希码和 equals 一样。这可能吗?

最佳答案

  • 如果缺乏对象身份源于序列化-反序列化往返,只需给他们一个唯一的 ID,并使用该 ID 作为 key
  • 如果您可以确定其余属性取决于该子集或与您的操作无关,则根据其属性的子集计算键
  • 实现您自己的散列映射和对象散列。这对于宿主对象来说可能会很棘手,但对于兼容 JSON 的数据应该相当简单
  • 在每次获取或设置之前进行 JSON 编码。它效率很低,并且只适用于 JSON 可序列化对象。但比之前的选项更容易实现

关于javascript - 如何在不维护引用的情况下在对象上使用 ES6 HashMap (在 Java 哈希码中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28357647/

相关文章:

javascript - Angularjs:通过单击按钮自动填充数据库中的文本框值

ecmascript-6 - ES6中的默认导出。您为什么不需要分号?

c++ - 如何从 C++ 调用 javascript 回调

node.js - koa:mongodb/redis 事件连接计数不断增加

javascript - 将 CSS 样式应用于动态创建的 DIV

javascript - 如何显示所选下拉列表中的类别之一

javascript - Sinon,使用 Promise.reject() 到 stub.rejects() 观察不同的行为

javascript - ECMAScript 6 箭头函数作为对象属性

node.js - 如何在 webpack 中同时使用 ES6 加载器和 brfs 转换?