JS - 对于嵌套对象的数组,每个对象都有不同的键,是否可以将每个对象复制到一个新对象,只复制非零值?

JS - For an array of nested objects, each object having different keys, is it possible to copy each to a new object, copying only non-zero values?

提问人:respectabiggle 提问时间:7/27/2023 更新时间:7/27/2023 访问量:9

问:

我有一个包含许多嵌套对象的数组。

每个对象都具有非零值和零值的属性。

原始对象 1

{
    pigs: 0,
    water buffalo: 1
    
}

原始对象 2

{
    horses: 1,
    cows: 0,
    magical: {
        unicorns: { European: 0 },
        centaurs: { Mongolian: 1 },
        dragons: {
            green: 2,
            black: 0
        }
    }
}

所需的新对象 1

{
    water buffalo: 1
}

所需的新对象 2

{
    horses: 1,
    magical: {
        centaurs: { Mongolian: 1 },
        dragons: {
            green: 2
        }        
    }
}

到目前为止的尝试:这适用于查找非零值,

for (let [i,x] of array.entries()) {

    for (let [j, y] of Object.entries(z)) {

        for (let [k, z] of Object.entries(y){

            if (z != 0) {
                console.log(z)

            // newObj[j] = {}
            // newObj[j][k] = z
            // console.log(newObj)

            }

        }
    }
}

...但是当我尝试将它们转换为新对象(注释掉的部分)时,它只保留了循环中最后一次迭代的对象端口。

{

    magical: {
        centaurs: { Mongolian: 1 },
        dragons: {
            green: 2
        }        
    }
 }

缺少的是 : { horses: 1 }

是否有一种通用的方法来(有条件地)过滤/映射嵌套对象,您事先不知道这些属性?

谢谢!!!

对象 过滤器 嵌套 映射 JavaScript-Objects

评论


答: 暂无答案