合并数组中多个键具有相同值的对象

时间:2018-09-17 07:49:00

标签: javascript

我有一个数组:

[
{"a": a, "b": b, "c": c}, 
{"a": a, "b": b, "d": d}, 
{"a": a, "b": 2, "c": 3}
]

并且我想合并前两个对象,因为它们对a和b具有相同的值,所以我将得到一个结果数组:

[
{"a": a, "b": b, "c": c, "d": d}, 
{"a": a, "b": 2, "c": 3}
]

有人可以帮我弄清楚如何用纯JavaScript做到这一点吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

希望这会有所帮助。

const array = [
    {"a": 1, "b": 3, "c": 4},
    {"a": 1, "b": 3, "d": 5},
    {"a": 2, "b": 2, "c": 3}
];

const combine = (array) => {

    const other = [];
    let combined = {};

    array.forEach((item) => {

        if (!combined.a) combined = item;

        else if (combined.a === item.a && combined.b === item.b) Object.assign(combined, item);

        else other.push(item);
    });

    return other.concat(combined);
};

console.log(combine(array));