1

I am trying to remove the empty nodes from the list in C#. I am trying to make a structure like tree view but due to some issues I need to have the node removed and it’s coming as Null.

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: []
  }
];

How to remove the empty nodes in C# or JavaScript?

Sebastian Simon
  • 18,263
  • 7
  • 55
  • 75
Basant Gera
  • 103
  • 3
  • 16

1 Answers1

0

To delete a property from an object you may use delete operator.

To remove empty nodes from your tree, you could loop recursively through the tree and remove nodes when his length is zero, see follow:

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);

I hope it helps you. Bye

Alessandro
  • 4,382
  • 8
  • 36
  • 70