2015-09-17 48 views
0

我的數據集中有一堆節點和鏈接。缺失的數據意味着不顯示可視化

所有鏈接都有一個源和目標屬性。

但是,並非所有源節點和目標節點都位於我的節點數據集中。

實施例:

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

嗨@Alex_B我真的只是自己解決了它。我現在要回答這個問題,告訴你問題是什麼。謝謝:) – thatOneGuy

+1

太棒了。 @thisOneGuy –

回答

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)檢查此。如果他們有,然後他們被添加到邊緣陣列,然後我用力佈局:)