Javascript 是否存在允许对象键通过逻辑相等与引用相等而唯一的映射数据结构?

Javascript 是否存在允许对象键通过逻辑相等与引用相等而唯一的映射数据结构?,javascript,dictionary,data-structures,Javascript,Dictionary,Data Structures,我正在寻找有关数据结构的任何类型的信息,这些信息将允许我执行以下操作 // I assume a data structure like this would be called DeepMap var map = new DeepMap(); // The key is a deep JS object map.set({this: {is: 'a key'}}, 'value'); // Notice that we retrieve the value using a key that

我正在寻找有关数据结构的任何类型的信息,这些信息将允许我执行以下操作

// I assume a data structure like this would be called DeepMap
var map = new DeepMap();

// The key is a deep JS object
map.set({this: {is: 'a key'}}, 'value');

// Notice that we retrieve the value using a key that is not equal to the
// original key by reference. However, it is logically equal.
map.get({this: {is: 'a key'}) === 'value'; // true
一个警告:它不能简单地散列对象的全部内容,将其转换为字符串键


有没有指向正确方向的指针?我用JS编程,但不一定要寻找JS特定的答案。谢谢

没有。您需要实现自己的DeepMap,并使用set和get将整个内容散列到一个字符串键中。(至少在js中)@juvian我可以实现我自己的DeepMap(我不是在寻找内置的数据结构)但是,你的意思是,如果不对对象键的内容进行散列,这样的事情是不可能的吗?要么将它们散列为字符串,要么将它们保留为obj,然后在get中,如果两个对象在逻辑上相等,则需要对照所有键进行检查,这意味着一个递归函数来检查它们的结构和值是否与sameAn算法相同,以有效地对集合中所有现有的键进行递归检查,这正是我要寻找的。如果没有已知的策略,那没关系,我只是想确定一下。你的set和get是否总是对象?它们总是字符串-值对还是可以有另一个对象作为键?