删除数组上的空值

Delete null values on an Array

我想用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;
}

希望你能帮助我。

尝试这样的事情:

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

obj 是您的 JSON 对象。

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

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

您可以像这样删除空值

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

尝试使用 underscore.js

_.compact(array)

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

使用 underscore.js 而不是自己编写循环或其他东西的优点是 underscore.js 函数比您的循环更快,出错的可能性也更少。