首页 > 解决方案 > 合并两个具有不同键/属性的对象数组

问题描述

array1 = [{
        id: "David Moorman",
        current - margin: "500",
        current - customers: 123
    },
    {
        id: "Elaina Wasmus",
        current - margin: "600",
        current - customers: 45
    }
];
array2 = [{
    name: "Jose Maldonado",
    Purposed - margin: "700",
    purposed - customers: 100
}, {
    name: "David Moorman",
    Purposed - margin: "1000",
    purposed - customers: 34
}];

这是输出数组:

merge array = [{
    id: "David Moorman",
    current - margin: "500",
    Purposed - margin: "1000",
    current - customers: 123,
    purposed - customers: 100
}, {
    id: "Elaina Wasmus",
    current - margin: "600",
    Purposed - margin: NULL,
    current - customers: 45,
    purposed - customers: null
}, {
    id: "Jose Maldonado",
    current - margin: "0",
    Purposed - margin: "700",
    current - customers: null,
    purposed - customers: 100
}];

标签: typescript

解决方案


您可以为此使用 lodash。
在这里,我将 array2 中的 name 字段作为 id 字段。

 finalArr = _(_.flatten([array1, array2]))
                                        .groupBy('id')
                                        .map(_.spread(_.assign))
                                        .value();

这仅在 array2 具有带有 name 字段值的 id 字段时才有效。
两个数组都必须有一个唯一的字段才能正确合并。


推荐阅读