如何从Javascript中的对象中删除所有空白对象?

use*_*419 8 javascript

如何从Javascript中的对象中删除所有空白对象?像这样

const test={a:'a',b:{},c:{c:{}}}
Run Code Online (Sandbox Code Playgroud)

如何获得结果:

test={a:'a'}
Run Code Online (Sandbox Code Playgroud)

top*_*oon 4

下面的递归函数将删除所有空对象。

function removeEmpty(obj) {
    Object.keys(obj).forEach(k => {
        if (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k]) === null) {
            delete obj[k];
        }
    });

    if (!Object.keys(obj).length) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

工作演示

function removeEmpty(obj) {
    Object.keys(obj).forEach(k => {
        if (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k]) === null) {
            delete obj[k];
        }
    });

    if (!Object.keys(obj).length) {
        return null;
    }
}

const test1 = {data:{a:{}}};
removeEmpty(test1);
console.log(test1); // {}

const test2 = {data:{a:{}, b:1}};
removeEmpty(test2);
console.log(test2); // {data:{b: 1}}

const test3 = {a:'a',b:{},c:{c:{}}};
removeEmpty(test3);
console.log(test3); // {a: 'a'}
Run Code Online (Sandbox Code Playgroud)