相关疑难解决方法(0)

如何在 ES6 Map 中获得键的深度相等?替代使用复杂对象作为 ES6 Map 键?

下面是一些示例 Javascript (ES6) 代码,它们不会按照直觉想象的那样做。

const exampleMap = new Map([[{a: 1}, 2]]);
console.log(exampleMap.get({a: 1}));
Run Code Online (Sandbox Code Playgroud)

事实证明,这会打印undefined. 为什么?这个 StackOverflow answer 中涵盖了推理。每对MDN条目地图Map使用===为重点的平等。并且,根据的 MDN 条目===Objects 通过引用相等进行比较。

这一切都很好。它完全按照文档所说的去做。不幸的是,上面的代码试图做的事情会非常有用,即使它不是规范的实际行为。

我如何使用Map,或者我应该使用什么来代替Map,来获得键值查找,其中键是通过对象深度相等语义进行比较的?

javascript ecmascript-6

7
推荐指数
1
解决办法
803
查看次数

如何在任何对象上使用ES6 Hash Map而不维护引用(即Java哈希码)

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

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

这是因为{key:"value"} === {key:"value"}为false.

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

javascript ecmascript-6 io.js

2
推荐指数
1
解决办法
1899
查看次数

标签 统计

ecmascript-6 ×2

javascript ×2

io.js ×1