数据结构:两个指向相同值的映射

时间:2014-10-01 16:48:28

标签: data-structures

我正在寻找一个数据结构,其中多个地图指向相同的值

例如:

  1. 我们有一个对象A
  2. 我们有两张地图Map1和Map2

    var map1 = {   objectA.attribute1:objectA }

    var map2 = {   objectA.attribute2:objectA }

  3. 现在,如果我从一个地图中删除该对象,它也应该在另一个地图中删除它。

    var attribute1 = objectA.attribute1
    var attribute2 = objectA.attribute2
    delete map1[attribute1]
    map2[attribute2] === null
    

    换句话说,有多种查找对象的方法,但一旦被删除,所有查找都会消失。

    查看此问题的另一种方法可能是:

    这是一个类似SQL的基于行的数据结构。

    我们有一个对象数组。可以以类似地图的方式查找对象中的某些属性。并且可以通过任何属性删除该对象。

    是否有可以帮助我这样做的数据结构?

1 个答案:

答案 0 :(得分:0)

你应该使用双向哈希。一个映射键将其他映射对象对象转换为键。

通过key1,key2,... keyN:

添加对象

通过键列表将对象插入第一个映射,并通过对象将键列表添加到映射中,通常为此目的使用对象的散列。

var map_by_key = { 'key1' : objectA , 'key2' : objectA , ... 'keyN' : objectA }
var map_by_object = { objectA_hash : [ 'key1' , 'key2' , ... , 'keyN' ] }

按键删除对象:

通过第一个映射中的键获取对象,然后从第二个映射中获取来自对象散列的键列表。从第一张地图中删除所有键,最后从第二张地图中删除该键。