3

私は 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
4

1 に答える 1