Ich glaube, der Algorithmus von der ersten Antwort vorgeschlagen -von Macramole- (vor Updates) würde tatsächlich die nicht verbundenen Knoten (Grad 0), statt denen mit Grad 1 verstecken. würde ich wahrscheinlich nur über alle iterieren die Kanten im Netzwerk, während für jeden Knoten, der ein Endpunkt in der Kante ist, die Sie besuchen, Gradzähler vorhanden sind (Sie können diese Knoten erhalten, indem Sie die Werte edge.from und edge.to wie oben gezeigt verwenden). Sie würden den Gradzähler für einen Knoten erhöhen, wenn der Knoten bei dieser Suche durch die Kanten "getroffen" wird. Schließlich erhalten Sie den Gradwert für jeden Knoten im Netzwerk, an dem Sie entscheiden können, welche ausgeblendet werden sollen. Aktualisierung dieser Antwort jetzt meine vorgeschlagenen Code enthalten (Anmerkung: Knoten und Kanten sind über DataSet-Instanzen):
Beispielcode:
var nodeToDegrees = {}; // keeps a map of node ids to degrees
var nodeFrom, nodeTo;
for (edge in edges) {
nodeFrom = edge.from;
nodeTo = edge.to;
nodeToDegrees[nodeFrom] = nodeToDegrees[nodeFrom] ? nodeToDegrees[nodeFrom] + 1 : 0;
nodeToDegrees[nodeTo] = nodeToDegrees[nodeTo] ? nodeToDegrees[nodeTo] + 1 : 0;
}
for (node in nodes) {
if (nodeToDegrees[node.id] = 1) nodes.update([{node.id, hidden: true}]);
}
Ja, Sie haben Recht, über der Algorithmus Verwendung als Ausgangs sein kann Punkt, aber OP sollte Zähler hinzufügen und verstecken, wo der Zähler ist 1 – macramole
Ich habe meine Antwort – macramole
Dank für den Kommentar aktualisiert. Ich habe jetzt auch meine Antwort aktualisiert, um einen Code zur Verfügung zu stellen, der den Unterschied veranschaulicht (keine zweistufige Schleife, die teurer ist) – pgoldweic