私は JavaScript と d3 に比較的慣れていませんが、強制指向のレイアウトに非常に興味があります。Mike Bostock の強制指向のビジュアライゼーションでは、次のコード (または類似のコード) を使用して、リンクのリストからノードを解析する傾向があります。
var links = [
{source: "A", target: "B"},
{source: "B", target: "C"},
{source: "C", target: "A"}];
var nodes = {};
links.forEach(function(link) {
link.source = nodes[link.source] || (nodes[link.source] = {name: link.source});
link.target = nodes[link.target] || (nodes[link.target] = {name: link.target});
});
私は彼がここで最終的に何を達成したかを完全に理解しています。ループ内の JavaScript 構文をよりよく理解したいだけですforEach
(実際にはまったく)。誰かが説明できれば、本当に感謝しています。
これは明らかに非常に洗練されたコードですが、インターネットのどこにも説明が見つかりません。検索で重要な用語が見つからない可能性があるため、しぶしぶここで質問しています。本当に私をうんざりさせているのは何ですか:
- のどちらかの側にある 2 つの割り当てが何をするか
||
、 - 各行の最初の割り当ての順序 (各 の左側):たとえば、
||
なぜそうではlink.source = nodes[link.source]
ないのか。nodes[link.source] = link.source