Javascript 合并并展平阵列的元素
下面的JSON内容实际上来自API,但我使用JSON文件进行测试。我想合并主键并展平ItemListJavascript 合并并展平阵列的元素,javascript,Javascript,下面的JSON内容实际上来自API,但我使用JSON文件进行测试。我想合并主键并展平ItemList [{ "PrimaryKey": "123", "ItemList": [ { "SecondaryKey": "ABC", "Name": "Item1", "Description": "Sample item" },
[{
"PrimaryKey": "123",
"ItemList": [
{
"SecondaryKey": "ABC",
"Name": "Item1",
"Description": "Sample item"
},
{
"SecondaryKey": "DEF",
"Name": "Item2",
"Description": "Another sample item"
}
],
"IgnoreThis": [
{
"SomeData": "Some Data"
}
]
}]
我想要的输出是:
[{
"PrimaryKey": 123,
"SecondaryKey": "ABC",
"Name": "Item1",
"Description": "Sample Item"
},
{
"PrimaryKey": 123,
"SecondaryKey": "DEF",
"Name": "Item2",
"Description": "Another sample item"
}]
我已将项目列表展平为:
let items = [];
items.push(JSON.parse(fs.readFileSync('./items.json')));
let result = items.reduce((r, obj) => r.concat(obj.ItemList), []);
我曾尝试使用items.map来获得所需的输出,但没有任何效果,我认为我不知道如何有效地链接.map和.reduce,因为结果是未定义的
您知道如何实现此输出吗?您可以通过运行两次
map
来完成此操作:从第一个贴图中获取PrimaryKey
,然后将其添加到第二个贴图中的所有对象,然后展平从上一阶段获得的数组
const数据=[
{
主键:“123”,
项目列表:[
{
第二个键:“ABC”,
名称:“项目1”,
描述:“样本项目”,
},
{
第二个键:“DEF”,
名称:“项目2”,
Description:“另一个示例项”,
},
],
忽略这一点:[
{
SomeData:“SomeData”,
},
],
},
{
主键:“456”,
项目列表:[
{
第二个键:“ABC”,
名称:“项目1”,
描述:“样本项目”,
},
{
第二个键:“DEF”,
名称:“项目2”,
Description:“另一个示例项”,
},
],
忽略这一点:[
{
SomeData:“SomeData”,
},
],
},
];
const result=data.map({PrimaryKey,ItemList})=>ItemList.map(item=>({
PrimaryKey,
…项目,
}))).flat();
控制台日志(结果)代码>