Javascript 在不显式计算所有边的情况下构建图

Javascript 在不显式计算所有边的情况下构建图,javascript,d3.js,Javascript,D3.js,我现在正试图在js中构建一个与此类似的图形: 边应该是共享一个或多个相同标记的所有对象的连接 在以下示例中,存在这些边: n1 - n2 (dog) n1 - n4 (dog and cat) n2 - n3 (fish) n2 - n4 (dog and fish) n3 - n4 (fish and reptile) 例如: [ { "Name": "n1", "tags": [ "Dog", "Cat

我现在正试图在js中构建一个与此类似的图形:

边应该是共享一个或多个相同标记的所有对象的连接

在以下示例中,存在这些边:

n1 - n2 (dog)
n1 - n4 (dog and cat)
n2 - n3 (fish)
n2 - n4 (dog and fish)
n3 - n4 (fish and reptile)
例如:

[
    {
        "Name": "n1",
        "tags": [
            "Dog",
            "Cat"
        ]
    },

    {
        "Name": "n2",
        "tags": [
            "Dog",
            "Fish"
        ]
    },

    {
        "Name": "n3",
        "tags": [
            "Fish",
            "Reptile"
        ]
    },

    {
        "Name": "n4",
        "tags": [
            "Dog",
            "Cat",
            "Fish",
            "Reptile"
        ]
    }, 
]
我现在的问题是:

是否必须计算每个对象和每个标记的边? 是否有一个智能的解决方案,可以在不迭代的情况下计算标记,并在^2时间内完成?
有超过500个标记和更多的对象,因此边的数量将是巨大的。任何建议我都很感激,因为我对js基本上是新手。

所以你想要创建一个图形,这样如果两个对象具有相同的标记,那么它们之间就有一条边。你在问是否必须计算每个物体的边缘?除非我遗漏了什么,否则答案应该是肯定的。也许我说得不够清楚。实际上有一个由两部分组成的问题。您回答的第一个问题是,第二个问题是,如果有一个智能解决方案可以计算标记,而不必在^2次上遍历每个标记。请构建一个关联数组,将标记映射到包含标记的节点。若要构建此连接,则需要对每个节点进行O1查找以获取连接。