javascript - 使用具有嵌套对象的对象展平数组
问题描述
许多类似于这里和这里的问题,但由于答案中的代码非常简洁,我很难根据自己的需要进行修改。
我有一个包含如下对象的数组:
[
{
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,
someProp: "value of some prop",
metaId: 123
uuid: "2348_4354_dfgg_r343"
},
{
id: 2,
someProp: "value of some prop again",
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; }
推荐阅读
- tfs - 重命名 NuGet 源
- wordpress - ionic wordpress rest api register 是安全的
- java - JUnit 4.12 使用并行计算运行的测试数量不一致
- c# - 代码建议的快捷键
- javascript - 移动或重命名文件时更新导入/需要路径 - 不起作用
- apache - httpd.conf 在 RHEL 7 中没有默认的 MPM 条目。我应该设置哪些值来将服务器限制为 2500 个并发连接?
- angular - $.fn.modal 未定义;用于引导箱
- google-cloud-platform - pub/sub : 如何使用 pub sub 查看任何电子邮件帐户中的消息?
- css - 如何在用户注册表单上实现两栏布局
- ios - IOS浏览器中的可下载应用程序