微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用具有嵌套对象的对象展平数组

如何解决使用具有嵌套对象的对象展平数组

许多与此类似的问题,例如 herehere,但由于答案中的代码非常简洁,因此我很难根据自己的需要进行修改

我有一个包含如下对象的数组:

[
    {
        id: 1,someProp: "value of some prop",MetaData: {
            MetaId: 123
            uuid: "2348_4354_dfgg_r343"
        }
    },{
        id: 2,someProp: "value of some prop again",MetaData: {
            MetaId: 321
            uuid: "9897_3543_ergl_j435"
        }
    }
]

我需要它看起来像:

[
    {
        id: 1,MetaId: 123
        uuid: "2348_4354_dfgg_r343"
    },MetaId: 321
        uuid: "9897_3543_ergl_j435"
    }
]

因此嵌套的 MetaData 对象的属性必须成为数组中每个项目中父对象的一部分。到目前为止,我已经尝试过:

console.log(Object.assign(
    {},...function _flatten(o) { 
        return [].concat(...Object.keys(o)
            .map(k => 
                typeof o[k] === 'object' ?
                    _flatten(o[k]) : 
                    ({[k]: o[k]})
            )
        );
    }(events)
));

然而,这只给了我扁平化的对象,但我的数组目前有两个。

解决方法

您可以展开嵌套对象。

const
    data = [{ id: 1,someProp: "value of some prop",metaData: { metaId: 123,uuid: "2348_4354_dfgg_r343" } },{ id: 2,someProp: "value of some prop again",metaData: { metaId: 321,uuid: "9897_3543_ergl_j435" } }],result = data.map(({ metaData,...o }) => ({ ...o,...metaData }));        

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。