根据某个字段合并数组对象

直接看代码

const data = [
  {name: '张三', age: 10},
  {name: '李四', age: 11},
  {name: '王五', age: 19},
]

const tempArr = [
  {name: '张三', hobby: '篮球'},
  {name: '李四', sex: '女'},
  {name: '赵六', age: 22}
]

// 例如这两个数组对象合并后的救过就是
[
  { name: '张三', age: 10, hobby: '篮球' },
  { name: '李四', age: 11, sex: '女' },
  { name: '王五', age: 19 },
  { name: '赵六', age: 22 }
]

方法如下

// 根据数组对象中的某个字段进行合并
const newArr = tempArr.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
}, data)

console.log(newArr)
// [
//   { name: '张三', age: 10, hobby: '篮球' },
//   { name: '李四', age: 11, sex: '女' },
//   { name: '王五', age: 19 },
//   { name: '赵六', age: 22 }
// ]

这样就完成里两个数组对象的合并啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieyucx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值