需要
有两个对象数组A和B,当初须要将两个数组中的对象合并,有则替换,无则新增,数组如下所示:
let A = [ {name: '张三', age: 18, sex:'男'}, {name: '李四', age: 26, sex:'男'}, {name: '王五', age: 32, sex:'男'}]let B = [ {name: '李四', age: 25, sex:'男', height: 170}, {name: '刘六', age: 32, sex:'女'}]合并后:C = [{ {name: '张三', age: 18, sex:'男'}, {name: '李四', age: 25, sex:'男', height: 170}, {name: '王五', age: 32, sex:'男'}, {name: '刘六', age: 32, sex:'女'}}]
操作
咱们剖析下A和B数组,A和B中都存在name=李四的对象,所以要替换,而B中的name=刘六A中不存在,所以要新增,话不多说,咱们通过js的reduce办法来做,代码如下:
const C = B.reduce((arr1, arr2)=>{ // arr1第一次进来是等于初始化化值:A // arr2顺次是B中的对象,挨个判断 let isFlag = false arr1.forEach(item => { if(item.name === arr2.name){ isFlag = true // 如果找到则替换 item = Object.assign(item, arr2) } }) if(!isFlag){ // 如果找不到则新增 arr1.push(arr2) } // 返回后果值arr1,作为reduce下一次的数据 return arr1 }, A)
这样就能胜利的合并A和B数组了,如果大家对reduce这个办法不太理解,能够查看mdn的官网文档