2017-04-04 1 views
1

Ich versuche, die leeren Knoten aus der Liste in C# zu entfernen. Ich versuche eine Struktur wie eine Baumansicht zu erstellen, aber aufgrund einiger Probleme muss ich den Knoten entfernen lassen und er kommt als Null.Wie entfernen Sie die leeren Knoten in C# oder JavaScript?

var tree = [{ 
    Id: 1, 
    text: "Parent 1", 
    ParentId: 0 
    nodes: [{ 
     Id: 2, 
     text: "Child 1", 
     ParentId: 1 
     nodes: [{ 
      Id: 3 
      text: "Grandchild 1", 
      ParentId: 2, 
      nodes: [] 
      }, 
      { 
      Id: 4, 
      text: "Grandchild 2", 
      ParentId: 2, 
      nodes: [] 
      } 
     ] 
     }, 
     { 
     Id: 5 
     text: "Child 2", 
     ParentId: 1, 
     nodes: [] 
     } 
    ] 
    }, 
    { 
    Id: 6, 
    text: "Parent 2", 
    ParentId: 0 
    nodes: [] 
    } 
]; 

Wie die leeren Knoten in C# oder JavaScript zu entfernen?

+0

überprüfen Array-Länge, wenn seine 0 verwenden "löschen", um diese Eigenschaft zu entfernen – vinox

+0

http://StackOverflow.com/Questions/208105/How-Do-Iremove-A-Property-from-a-Javascript-Object – vinox

+0

Es ist kein Array.its eine Liste – user57304

Antwort

0

Um eine Eigenschaft von einem Objekt zu löschen, können Sie delete operator verwenden.

Um leer zu entfernen nodes von Ihrem tree, Sie Schleife durch den Baum rekursiv konnte und nodes entfernen, wenn seine length Null ist, sehen wie folgt vor:

var tree = [ 
 
    { 
 
     id: 1, 
 
     nodes: [ 
 
     { 
 
      id: 2, 
 
      nodes: [ 
 
      { 
 
       id: 3, 
 
       nodes: [] 
 
      } 
 
      ] 
 
     }, 
 
     { 
 
      id: 4, 
 
      nodes: [] 
 
     } 
 
     ] 
 
    }, 
 
    { 
 
     id: 5, 
 
     nodes: [] 
 
    } 
 
]; 
 

 
function traverse(obj) { 
 
    for (key in obj) { 
 
     if (!!obj[key] && typeof(obj[key])=="object") { 
 
      if(key==="nodes"){ 
 
       var nodesLen = obj[key].length; 
 
       if(nodesLen == 0){ 
 
       delete obj[key]; 
 
       } 
 
      } 
 
      traverse(obj[key]); 
 
     } 
 
    } 
 
} 
 

 
console.log("BEFORE"); 
 
console.log(tree); 
 

 
traverse(tree); 
 

 
console.log("AFTER"); 
 
console.log(tree);

Ich hoffe, dass es Ihnen hilft. Tschüss

Verwandte Themen