我想将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
}
]
这样的东西对您有用吗?
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)