Domanda

in d3, Esempio di bundling del bordo , abbiamo questo codice

// Lazily construct the package hierarchy from class names.
function packageHierarchy(classes) {
  var map = {};

  function find(name, data) {
    var node = map[name], i;
    if (!node) {
      node = map[name] = data || {name: name, children: []};
      if (name.length) {
        node.parent = find(name.substring(0, i = name.lastIndexOf(".")));
        node.parent.children.push(node);
        node.key = name.substring(i + 1);
      }
    }
    return node;
  }

  classes.forEach(function(d) {
    find(d.name, d);
  });

  return map[""];
}
.

Non riesco a capire cosa significa return map[""];.Qualche idea?

È stato utile?

Soluzione

Per ogni classe è dato, funziona in modo ricorsivo attraverso i genitori, prendendo il nome della classe fino all'ultimo ., aggiungendo ogni genitore sulla mappa come va, aggiungendo infine un genitore con stringa vuota per il nome (c'era No Dot).

Questo genitore è considerato come la radice e ha un percorso di stringa vuota, e questo nodo è ciò che viene restituito.

Proverò a spiegare meglio con un esempio;

Dato una classe con il percorso completo Main.Sub.Class, il codice aggiungerà il nodo Main.Sub.Class alla mappa con quel percorso, quindi provare a trovare / creare un nodo per Main.Sub e aggiungerli da bambino a questo nodo genitore. < / P >.

Se deve creare un nuovo nodo per Main.Sub, cercherà di trovare anche il genitore per questa classe (Main) e aggiungere Main.Sub come bambino a Main. Quindi continua ancora, ma dal momento che non esiste . nel percorso, il percorso principale è "" (Stringa vuota).

Poiché tutte le classi finisseranno finiscono per aggiungere se stesse come figlio al nodo della stringa vuota, questo nodo può essere considerato il nodo root, e quindi il nodo da restituire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top