当前位置: 首页 > Web前端 > JavaScript

js使用reduce方法合并两个对象数组,有则替换,没有则添加

时间:2023-03-27 16:22:38 JavaScript

需求有两个对象数组A和B,现在需要合并两个数组中的对象,有则替换,无则添加,数组如下:letA=[{name:'张三',age:18,sex:'男'},{name:'李四',age:26,sex:'男'},{name:'王舞',age:32,sex:'男'}]letB=[{name:'丽丝',age:25,sex:'男',height:170},{name:'刘刘',age:32,sex:'女'}]After合并:C=[{{name:'张三',age:18,sex:'男'},{name:'李四',age:25,sex:'男',height:170},{name:'WangWu',age:32,sex:'male'},{name:'LiuLiu',age:32,sex:'female'}}]操作我们分析一下A数组和B数组,有name=LiSi在A和B中都反对,所以需要替换,B中的name=LiuLiu在A中不存在,所以需要添加。话不多说,我们用js的reduce方法来做,代码如下:constC=B.reduce((arr1,arr2)=>{//arr1第一次进来等于初始化value:A//arr2依次是B中的对象,一一判断letisFlag=falsearr1.forEach(item=>{if(item.name===arr2.name){isFlag=true//替换iffounditem=Object.assign(item,arr2)}})if(!isFlag){//如果没有找到则添加arr1.push(arr2)}//返回结果值arr1,作为reduce的下一个数据返回arr1},A)这样A和B就可以合并成功数组,如果对reduce方法不太了解,可以查看mdn的官方文档