在我的客户端JavaScript应用程序中,我需要一种多对多的关联机制来表示有向图的边缘:例如,一个源可以有很多目标,一个目标可以有很多源,例如:
{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]
其他两个细节:
我可以看到将其实现为两个映射:一个映射包含每个源的条目,其值是一组目标,另一个映射包含每个目标的条目,其值是一组源。
https://gist.github.com/rdpoor/89ea64cb00107be368b2b69d7a89bb6c