我的数据集中有一堆节点和链接。
所有链接都有源和目标属性。
但是,并非所有源节点和目标节点都在我的节点数据集中。
示例:
nodes : {
'id' : 'A'
},
{
'id' : 'B'
},
{
'id' : 'C'
};
links : {
'source' : 'A',
'target' : 'B'
},
{
'source' : 'B',
'target' : 'C'
},
{
'source' : 'C',
'target' : 'D'
}
注意最后一个链接链接节点'C'和'D',但我没有ID为'D'的节点。
所以我收到以下错误:
Cannot read property 'weight' of undefined
如果无法找到源/目标节点并继续显示强制布局可视化,如何不抛出错误?
答案 0 :(得分:0)
管理自己解决它。基本上,因为链接指向甚至不在数据集中的节点,所以我必须仅使用在数据中同时具有源和目标的链接。
以下是:
var edges = [];
links.forEach(function(e,i) {
console.log(links.length)
var sourceNode = nodes.filter(function(n) { return n.id === e.source; })[0],
targetNode = nodes.filter(function(n) { return n.id === e.target; })[0];
if(sourceNode && targetNode){ //this is to make sure both the source and target node are not undefined
edges.push({source: sourceNode, target: targetNode, origin : e.origin});
}
});
基本上,我必须使用另一个数组(边缘)并使用同时具有源节点和目标节点的链接填充该数组。
支票:if(sourceNode && targetNode)
检查一下。如果有,则将它们添加到edge数组中,然后使用force布局:)