【发布时间】:2017-12-10 22:20:30
【问题描述】:
查看几个不同的文档,我只看到 Map (ECMAScript6) 键是布尔值、字符串或整数时。有没有办法我们可以使用另一个自定义对象(使用 new CustomObject(x,y) 构造函数调用)作为键添加?
我可以添加一个对象作为键,但无法检查 Map 是否具有所述对象。
var myMap = new Map();
myMap.set( new Tuple(1,1), "foo");
myMap.set('bar', "foo");
myMap.has(?);
myMap.has('bar'); // returns true
有没有办法解决这个问题?
var myMap = new Map();
myMap.set( new Tuple(1,1), "foo");
for(some conditions) {
var localData = new Tuple(1,1); //Use directly if exists in myMap?
map.has(localData) // returns false as this is a different Tuple object. But I need it to return true
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has
【问题讨论】:
-
是的,您可以使用任何对象作为键。但是,它每次都必须是同一个对象——而不仅仅是一个具有相同键和值的对象。嵌套的
Map是实现Tuple查找的一种选择。 -
不幸的是,我无法检查它本身是否是同一个对象。它必须是具有一些设置相同的公共属性的对象。有没有办法做到这一点?
-
作为一名 Java 程序员,Javascript
Map的这些语义令人惊讶和困惑。在 Java 中,我们必须为我们的类提供equals()和hashCode()方法,然后 JavaHashMap类在使用不同对象但等效对象的键时按预期工作(即,键可以具有 值语义)。
标签: javascript dictionary