JavaScript中有效的多对多关联

问题描述 投票:0回答:1

在我的客户端JavaScript应用程序中,我需要一种多对多的关联机制来表示有向图的边缘:例如,一个源可以有很多目标,一个目标可以有很多源,例如:

enter image description here

{source:n1, target:n2}
{source:n1, target:n3}
{source:n1, target:n4}
{source:n2, target:n3}
{source:n3, target:n4}

我需要执行四个操作:

add_link(n1, n2); // add a link (unless present)
has_link(n2, n4); // => false (no entry with source:n2 and target:n4)
targets_of(n1);   // => [n2, n3, n4]
sources_of(n4);   // => [n1, n3]

其他两个细节:

  • 此结构将经常阅读,但偶尔会被修改。
  • 如果简化,“节点”可以是字符串键,而不是对象。

我可以看到将其实现为两个映射:一个映射包含每个源的条目,其值是一组目标,另一个映射包含每个目标的条目,其值是一组源。

问题:

  • 这是明智的做法吗?
  • JavaScript领域中已经存在一些数据结构可以做到这一点吗?
javascript data-structures directed-graph
1个回答
0
投票
如@CertainPerformance所述,两个Map(每个都包含Set)似乎可以解决问题。产生的实现在以下位置可用:

https://gist.github.com/rdpoor/89ea64cb00107be368b2b69d7a89bb6c

© www.soinside.com 2019 - 2024. All rights reserved.