Search code examples
arraysjsonnode.jsfor-loopisnullorempty

Delete null values on an Array


I would like to send an object with JSON, I iterate this object with a for loop. My JSON sent is correct but the problem is there is null values in the array. I thinks it's linked with the myValue.children[index]= item; I tried .filter() method but it didn't resolve my problem because array returned is empty. I also tried a condition but I just have 4 values detected. This is the JSON I receive :

{
  "name":"object",
  "children":[
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    },
    null,
    null,
    null,
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    },
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    },
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    }
  ]
}

This is my code :

function myFunction(index, tabItem , callback){
    var result = '';
    var myValue = {};
    var childrenTicket = [];
    myValue.name = "object";
    myValue.children = childrenTicket;
    for (index in tabItem) {
        try{
            var currentItem = tabItem[index];
            var Object =currentItem.issuelinks.issuelinktype.outwardlinks.issuelink;
            for(var SeveralObject in Object) {
                var item = {};
                var specificObject = Object[SeveralObject]; 
                var main = specificObject._;
                var id = specificObject.$.id;
                var descriptionObject = {};
                descriptionObject.name = id;
                descriptionObject.size = 12345;
                item.name = main;
                if (myValue.children[index] == undefined){
                    console.log('undefined detected'); 
                }
                myValue.children[index]= item;
                //result = result + (myValue);
                item.children = [descriptionObject];
                sendJson(myValue);
                callback(result);
            }
        } catch(ignored){
        }
    } return result;
}

Hope you will can help me.


Solution

  • You can use underscore module and use its compact method.

    Link: http://underscorejs.org/#compact