美好的一天!JS/d3.js - 刪除/合併d3.js節點圖中的重複鏈接
我在JS/d3.js一個初學者,我目前工作的一個小項目。這裏是我以前的問題:
- D3.js: Dynamically generate source and target based on identical json values
- JS/d3.js: Steps to Highlighting of adjacent links
我的項目旨在根據用戶輸入動態創建源和目標對。但是,這樣做,我有幾個節點有重複的鏈接。經過進一步檢查,我意識到這可能是由於在創建的數組中重複了Source/Target元素。這裏的「鏈接」數組裏面發生了什麼事的摘錄:
//Source and target are unique identifiers of each datastruct
source: S001A, target: S002A
source: S001A, target: S003A
source: S001A, target: S004A
source: S002A, target: S001A //Duplicate
source: S002A, target: S005A
source: S003A, target: S001A //Duplicate
source: S003A, target: S006A
source: S004A, target: S001A //Duplicate
...
這是由於我具有「朋友」嵌套數組的原始數據,這裏是在數據集中的條目示例:
{
"NRIC": "S001A",
"name": "Benjamin",
"blk": 123,
"estate": "Woodlands",
"street": "Woodlands Street 12",
"unitNo": "01-23",
"postal": 123123,
"school": "Nanyang Technological University",
"Friends": //Nested array..
[
"S002A",
"S003A",
"S004A",
]
}
這裏是for循環,我使用以創建嵌套的數據的源 - 目標陣列:
graphData.forEach(function(gdata,index)
{
for (i = 0; i < gdata.Friends.length; i++)
{
links.push({
source: gdata.NRIC,
target: gdata.Friends[i]
});
}
});
這種用於循環將理解導致重複的路線作爲朋友是相互包容EAC的h其他。 (即S001A是S002A,S003A和S004A的朋友,S002A在他的'朋友'陣列中也有S001A)。
雖然我還以爲只使用源/目標對其中source === this.id的,但我怕我會再省略一些對,這將影響到數據的完整性..
有沒有一種方法可以迭代並從數組中刪除配對?無論是通過修改當前的for-loop,還是對數據進行後期處理。
非常感謝您的幫助!
前段時間我回答了一個類似的問題,檢查解決方案是否適用於您的情況:http://stackoverflow.com/a/40167473/5768908 –
非常感謝您的幫助!雖然排序功能在我的情況下不起作用,因爲我正在比較字母數字值,但我確實設法以迂迴的方式進行,儘管我知道這種方法會導致性能問題。我將在下面發佈我的解決方案:) –