js数组根据对象内 多个key值相同 合并对象内数组

arr = [{
 status: "1",
 name: "张三",
 origin : [1]
},{
 status: "1",
 name: "张三",
 origin : [2]
},{
 status: "2",
name: "张三",
 origin : [3]
},{
 status: "2",
 name: "张三",
 origin : [4]
}]

怎样合并为

arr = [{
 status: "1",
 name: "张三",
 origin : [1,2]
},{
 status: "2",
 name: "张三",
 origin : [3,4]
}]

题主要的代码如下,

img


    arr = [{
        status: "1",
        name: "张三",
        origin: [1]
    }, {
        status: "1",
        name: "张三",
        origin: [2]
    }, {
        status: "2",
        name: "张三",
        origin: [3]
    }, {
        status: "2",
        name: "张三",
        origin: [4]
        }]
    var newArr = [], kv = {};

    arr.forEach(item => {
        var key = item.status + item.name;
        if (kv[key] !== undefined) {
            kv[key].origin = kv[key].origin.concat(item.origin);
        }
        else {
            kv[key] = item;
            newArr.push(item);
        }
    });
    console.log(JSON.stringify(newArr, null, 2))

img

以name作为key吗?定义一个新的数组,使用循环嵌套判断新数组中是否存在,如果存在向数组push一个新的元素。