D3.js-用D3 / JS合并两个邻接矩阵

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

我想将2个邻接矩阵与d3.js合并。仅作为示例:

矩阵1:

{
    "nodes":[
        {
            "id": a,
            "year": 1
        },{
            "id": b,
            "year": 1
        },
        {
            "id": c,
            "year": 1
        }
    ],
    "links":[
        {
            "source": a,
            "target": b
        },
        {
            "source": a,
            "target": c
        }
    ]
}

矩阵2:

{
    "nodes":[
        {
            "id": a,
            "year": 2
        },{
            "id": b,
            "year": 2
        },
        {
            "id": d,
            "year": 2
        }
    ],
    "links":[
        {
            "source": a,
            "target": b
        },
        {
            "source": a,
            "target": d
        }
    ]
}

如您所见,某些ID出现在两个矩阵中,例如a和b。我想将此单元合并成两个矩阵,并更改该单元的颜色。有人可以给我一些解决该问题的想法吗?

结果必须是这样的:

{
    "nodes":[
        {
            "id": a,
            "year": 3
        },{
            "id": b,
            "year": 3
        },
        {
            "id": c,
            "year": 1
        },
                {
            "id": d,
            "year": 2
        }
    ]
javascript d3.js adjacency-matrix
1个回答
0
投票

这样的东西对您有用吗?

const m1 = {"nodes":[{"id":'a',"year":1},{"id":'b',"year":1},{"id":'c',"year":1}],"target":[{"source":'a',"target":'b'},{"source":'a',"target":'c'}]},
      m2 = {"nodes":[{"id":'a',"year":2},{"id":'b',"year":2},{"id":'d',"year":2}],"target":[{"source":'a',"target":'b'},{"source":'a',"target":'d'}]},
      
      merged = {
        nodes: [...m1.nodes, ...m2.nodes].reduce((r,e) => {
          const dupe = r.find(({id}) => e.id==id)
          dupe ? dupe.year = 3 : r.push(e)
          return r
        }, [])
      }
      
console.log(merged)      
© www.soinside.com 2019 - 2024. All rights reserved.