TypeScript:映射的键(对象)不工作

TypeScript:映射的键(对象)不工作,typescript,dictionary,equality,Typescript,Dictionary,Equality,我在检查地图是否已经有对象作为键时遇到了一些问题 e、 g 但是myMap.has(myObject1)始终为false。 我读到has方法是基于===运算符的,我应该在MyObject1类中定义其他东西吗?因为最后每个JSON对象都只是一个字符串,所以我最终使用JSON.stringify(myObject)作为映射的键,使用两个值(MyObject1,MyObject2)作为实际值。通过这种方式,我能够在时间O(1)内获得所需的值,同时保持键对象可用,而无需再次解析JSON或最糟糕的情况,再

我在检查地图是否已经有对象作为键时遇到了一些问题

e、 g

但是
myMap.has(myObject1)
始终为false。
我读到has方法是基于===运算符的,我应该在MyObject1类中定义其他东西吗?

因为最后每个JSON对象都只是一个字符串,所以我最终使用JSON.stringify(myObject)作为映射的键,使用两个值(MyObject1,MyObject2)作为实际值。通过这种方式,我能够在时间O(1)内获得所需的值,同时保持键对象可用,而无需再次解析JSON或最糟糕的情况,再次从DB检索JSON。

JavaScript在比较对象是否相等时不使用任何
equals()
方法。为什么不让你的map在
MyObject1
id
字段中设置键,然后执行
myMap.has(MyObject1.id)
?它可能是关于
Set
而不是
map
的重复项,但它的问题是相同的:key equality我需要将这个map原样传递给另一个现有的Java API,它将解析这个JSON。那么你的意思是不可能使用对象作为贴图的键?我说得对吗?JavaScript中的
Map
与Java中的
Map
不同,它们都不是JSON。贴图中的对象仅与同一实例匹配。
const myMap: Map<MyObject1, MyObject2> = new Map<MyObject1, MyObject2>();
equals(other: ThreatAgentMgm): boolean {
    return other.id === this.id;
}