如何递归删除空对象?

时间:2016-03-05 22:51:40

标签: mongodb recursion lodash

如果一个对象的所有键都是空的,我想用undefined替换它们。例如

$(document).on('click','#btninsertrequest',function(){
alert("yes");
}); 

应该是:

{
    a: 1,
    b: {
       c:  2,
       d:  {
           e: undefined,
           f: undefined,
        }
    },
    g:  {
       h: undefined,
       i: undefined,
    }
}

保持未定义的值非常重要,因为它是从mongodb中删除de key

1 个答案:

答案 0 :(得分:2)

首先,我们可以定义一个函数来删除所有undefined值以满足您的要求

function removeUndefinedObject(obj) {
    var isAllUndefined = true;

    for (var k in obj) {
        if (typeof obj[k] === 'object') {
            obj[k] = removeUndefinedObject(obj[k]);
        }
        if (typeof obj[k] !== 'undefined')
            isAllUndefined = false;
    }

    if (isAllUndefined)
        obj = undefined;
    return obj;
}

然后在mongodb集合中使用此功能

var cursor = db.collection.find({}); // get all documents from collection
cursor.forEach(function(doc) {
   // remove undefined value for each document
   removeUndefinedObject(doc); 
   // save this changed doc into this collection
   db.collection.update({_id: doc._id}, doc);
});