普通的数组处理重复还是很简单,只需调用set函数即可如下:
let arr1 = [1,3,4,54,2]
let arr2 = [2,3,4,5]
let newArr = [...new Set([..arr1,...arr2])]
// [ 1, 3, 4, 54, 2, 5 ]
而数组里是对象如何处理重复呢?代码如下:
let arr = [{
title:"A",
key:"A",
width:120
},{
title:"B",
key:"B",
width:120
},{
title:"C",
key:"C",
width:120
}]
let addArr = [{
title:"E",
key:"E",
width:120
},{
title:"C",
key:"C",
width:120
},{
title:"F",
key:"F",
width:120
}]
function isEqual(obj1, obj2) {
return obj1.title === obj2.title && obj1.key === obj2.key && obj1.width === obj2.width;
}
let mergedArray = arr.concat(addArr.filter(item => !arr.some(existingItem => isEqual(existingItem, item))));
console.log(mergedArray)
先创建一个函数isEqual判断对象中的每个key与value是否相等。
然后用concat函数合并数组,
合并时通过filter函数进行过滤,
过滤时通过some进行迭代判断对象是否存在相同的。