JS两个对象数组合并去重

需求

将数组A——arr1  添加到数组B——arr2,例:

arr1=[ {'id' : '1','text':'dasdas'},{'id' : '2','text':'的味道'},{'id' : '3','text':'十多万群'} ]

arr2=[{'id' : '2','text':'dasdas'},{'id' : '3','text':'的味道'},{'id' : '4','text':'十多万群'} ,{'id' : '5','text':'十多万群'} ,.............]

实现效果:最终的arr2只是比原来增加了id为1的对象元素。因为id为2 3的已经存在。

思路

将arr2的id抽取出来变成一个只有id的数组ids;把arr1数组使用filter方法进行条件筛选,筛选条件为arr1中对象的id如果在数组ids中存在,则返回false;最终filter方法会返回一个符合条件的新数组;然后将该数组添加到arr2中,完成。

//这是实际业务代码逻辑,

let tbArr = this.tableData;//相当于arr2

let dataRecieve = this.$refs[this.activeName].getCheckedNodes(true);//相当于arr1

let ids = tbArr.map(item => item.id);//只有id的数组

//最后这里的res数组就是不重复的数组那部分
let res = dataRecieve.filter((num) => {
    
    let res = !(ids.indexOf(num.id) > -1); //添加的数组对象id是否已经存在
    return res; //false表示不符合条件
 
});


// console.info(res)

this.tableData = this.tableData.concat(res);

你可能感兴趣的:(JavaScript,javascript)