Javascript 合并并展平阵列的元素

Javascript 合并并展平阵列的元素,javascript,Javascript,下面的JSON内容实际上来自API,但我使用JSON文件进行测试。我想合并主键并展平ItemList [{ "PrimaryKey": "123", "ItemList": [ { "SecondaryKey": "ABC", "Name": "Item1", "Description": "Sample item" },

下面的JSON内容实际上来自API,但我使用JSON文件进行测试。我想合并主键并展平ItemList

[{
        "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();
控制台日志(结果)