删除Array上的空值

时间:2016-04-21 06:30:36

标签: arrays json node.js for-loop isnullorempty

我想用JSON发送一个对象,我用for循环迭代这个对象。我发送的JSON是正确的,但问题是数组中有空值。我认为它与myValue.children[index]= item;相关联 我尝试了.filter()方法,但它没有解决我的问题,因为返回的数组是空的。我也尝试了一个条件,但我只检测到4个值。 这是我收到的JSON:

{
  "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
        }
      ]
    }
  ]
}

这是我的代码:

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

希望你能帮助我。

4 个答案:

答案 0 :(得分:0)

尝试这样的事情:

for (var i in obj) {
  if (obj[i] === null || obj[i] === undefined) {
    delete obj[i];
  }
}

obj是您的JSON对象。

答案 1 :(得分:0)

您可以使用underscore模块并使用其compact方法。

链接:http://underscorejs.org/#compact

答案 2 :(得分:0)

你可以删除像这样的空值

    for (var ite in ObjJson)
            {
                if(ObjJson[ite]==null)
                {
                console.log('ys null');
                delete ObjJson[ite];
                } 
            }

答案 3 :(得分:0)

尝试使用underscore.js

_.compact(array)

它将删除所有null,false,undefined等值。

使用underscore.js而不是自己编写循环或其他东西的优点是下划线.js函数将比你的循环更快,并且错误的可能性会更小。