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
}, []);
不好意思各位,我没说明白 它里面还有一个值