おはよう!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]
});
}
});
これは、forループの友人はEACの相互含まれていて当然のラインの下の重複が発生しますhその他。 (つまり、S001AはS002A、S003A、S004Aの友人であり、S002Aは彼の 'Friends'配列内にS001Aを持つ)。
..私は唯一のソース=== this.idソース/ターゲットのペアを使用するのではと思ったが、私はその後、いくつかのペアを省略することができ、それは、データの整合性に影響を与えることを恐れているものの配列からペアリングを繰り返して削除する方法はありますか?現在のfor-loopを修正するか、データの後処理を行うかのどちらかです。
ありがとうございました!
私は似たような質問にしばらく前に答えて、ソリューションがあなたのケースで動作するかどうかを確認してください:http://stackoverflow.com/a/40167473/5768908 –
ありがとうございました!ソート機能は私の場合は英数字の値を比較しているので私の場合は機能しませんでしたが、この方法でパフォーマンスの問題が発生することはわかっていますが、私はラウンドアバウト方式で処理しました。 –