且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

删除空白嵌套对象(ES6)中的空值-清除嵌套对象

更新时间:2023-11-29 11:58:16

您可以通过直接迭代对象的键/值对并首先迭代嵌套的可迭代对象,然后删除不需要的键来采取直接方法.

You could take an straight forward approach by iterating the key/value pairs of the object and iterate nested iterable objects first and then delete the unwanted keys.

function clean(object) {
    Object
        .entries(object)
        .forEach(([k, v]) => {
            if (v && typeof v === 'object') {
                clean(v);
            }
            if (v && typeof v === 'object' && !Object.keys(v).length || v === null || v === undefined) {
                if (Array.isArray(object)) {
                    object.splice(k, 1);
                } else {
                    delete object[k];
                }
            }
        });
    return object;
}

var object = { a: "string not empty", b: { c: "string not empty" }, d: { e: false, f: 0, g: true, h: 10 }, i: { j: 0, k: null }, l: { m: null }, n: { o: 1, p: "string (not empty)", q: {} }, r: [{ foo: null }] };

console.log(clean(object));

.as-console-wrapper { max-height: 100% !important; top: 0; }