javascript - JavaScript:为每个具有冗余父属性的嵌套项创建一个新数组项
问题描述
我正在寻找转换这样的数据集
[
{
"suburb":"Collingwood",
"couples":[
{
"husband":"Adam",
"wife":"Brittany"
},
{
"husband":"Dave",
"wife":"Carla"
}
]
},
{
"suburb":"CBD",
"couples":[
{
"husband":"Paul",
"wife":"Christine"
},
{
"husband":"Mike",
"wife":"Laura"
}
]
}
]
像这样的数据集
[
{
"suburb":"Collingwood",
"husband":"Adam",
"wife":"Brittany"
},
{
"suburb":"Collingwood",
"husband":"Dave",
"wife":"Carla"
},
{
"suburb":"CBD",
"husband":"Paul",
"wife":"Christine"
},
{
"suburb":"CBD",
"husband":"Mike",
"wife":"Laura"
}
]
是否有下划线功能可以执行此类操作,或者我需要循环并手动执行。目标是显示按妻子姓名排序和分组的最终列表
解决方案
您可以reduce
将原始数组转换为具有所需数据格式的新数组:
var data = [{
"suburb": "Collingwood",
"couples": [{
"husband": "Adam",
"wife": "Brittany"
},
{
"husband": "Dave",
"wife": "Carla"
}
]
},
{
"suburb": "CBD",
"couples": [{
"husband": "Paul",
"wife": "Christine"
},
{
"husband": "Mike",
"wife": "Laura"
}
]
}
];
var res = data.reduce((acc, curr) => {
// expand each couple to a new object and push all results to accumulator array
acc.push(...curr.couples.map(c => Object.assign({suburb: curr.suburb}, c)));
return acc;
}, []);
console.log(res);
推荐阅读
- .net - Hov将变量输入名称从循环发送到控制器?
- c++ - 用于 C++ 未定义引用的 SIGIL
- javascript - 如何在 Javascript 中在此处插入文本
- or-tools - Google OR-Tools Set Fixed Start Location and Allow Arbitrary End Location
- c# - 在运行时为 Rebus 生成消息处理程序
- r - 通过无序列表加入 tibbles
- sql - 根据其他列从不同列获取最新值
- ios - 防止第一响应者在 tableview 重新加载时辞职
- java - 从 Java 和 Python 返回参数
- mysql - 从 AWS RDS 创建 MySQL 架构