我正在寻找一个数据结构,其中多个地图指向相同的值
例如:
我们有两张地图Map1和Map2
var map1 = { objectA.attribute1:objectA }
var map2 = { objectA.attribute2:objectA }
现在,如果我从一个地图中删除该对象,它也应该在另一个地图中删除它。
var attribute1 = objectA.attribute1
var attribute2 = objectA.attribute2
delete map1[attribute1]
map2[attribute2] === null
换句话说,有多种查找对象的方法,但一旦被删除,所有查找都会消失。
查看此问题的另一种方法可能是:
这是一个类似SQL的基于行的数据结构。
我们有一个对象数组。可以以类似地图的方式查找对象中的某些属性。并且可以通过任何属性删除该对象。
是否有可以帮助我这样做的数据结构?
答案 0 :(得分:0)
你应该使用双向哈希。一个映射键将其他映射对象对象转换为键。
通过键列表将对象插入第一个映射,并通过对象将键列表添加到映射中,通常为此目的使用对象的散列。
var map_by_key = { 'key1' : objectA , 'key2' : objectA , ... 'keyN' : objectA }
var map_by_object = { objectA_hash : [ 'key1' , 'key2' , ... , 'keyN' ] }
通过第一个映射中的键获取对象,然后从第二个映射中获取来自对象散列的键列表。从第一张地图中删除所有键,最后从第二张地图中删除该键。