如何把一个数组里面,不同的多个对象,合并成一个对象

img

img


现在一个数组里面有两个对象,他们的id都是一样的,如何把一个数组里面,id相同的多个对象合并成一个对象

id一样,其他的值也都一样吗

既然里面内容都是一样的,删掉一个不就得了
如果只有ID相同,其他属性不同,那你是靠什么规律合并的呢

如果我没理解做的话你是要把重复的删除掉吧?因为看起来数据是一样的。
你可以参考

里边的。去重部分的想法。

如下:

let products1 = [{color:'red',size:'L',amount:'4'},{color:'green',size:'M',amount:'2'},
             {color:'yellow',size:'s',amount:'7'},{color:'red',size:'L',amount:'2'}];

function removeDuplicates(array,value1,value2){

let dup_indexes = [];//当前重复的条目的index 值数组,后面用于删除重复项
let filter_array = array.filter((v,idx)=> {if(v.color===value1 && v.size===value2) {
dup_indexes.push(idx);
return v;
}});

dup_indexes.sort((a,b)=> {return b-a});//把重复的index 倒序排列,从后往前删,从前删会乱掉
if(filter_array.length > 1){
 for(i=1;i < filter_array.length;i++){ //删除重复元素,值保留一个,所以i从1开始取值
   array.splice(dup_indexes[i],1);
 }
}
}
let obj = {}
let arr = arr.reduce((cur, next) => {
    if (!obj[next.id]) {
        obj[next.id] = true
        cur.push(next)
    }
    return cur
}, []);
或
let obj = {};
let arr = arr.reduce((cur, next) => {
    obj[next.id] ? '' : obj[next.id] = true && cur.push(next)
    return cur
}, []);


不好意思各位,我没说明白 它里面还有一个值

img


就是qty这个值,想让这两个对象合并后,qty这个值相加,不知道各位哥能否帮忙解答一下