js两个数组合并部分字段,生成一个新数组

相信大家都遇到过,一个数组中独有的部分字段合并到另一个数组中,生成一个新数组, 这种情况下该怎么操作呢

如下,我想把test2中的age和linght字段键和值添加到test1id相等的对象中,其余不相等的值则为0

var test1=[
   {id:1,name:'张三',sex:"女"},
     {id:2,name:'李三',sex:"女"},
     {id:3,name:'王三',sex:"女"},
     {id:4,name:'赵三',sex:"女"}
 ];
 var test2=[
     {id:1,light:'185',age:'17',sex:"女"},
     {id:2,light:'163',age:'20',sex:"女"}
 ];

思路为,先将test2中要合并的键值提出来(键名以key+id组合,如果单纯的以id来命名的话,如果id和下标一致的话,则会出现问题),形成一个新的对象,代码如下

  let map={};
  test2.forEach(v=>{
       map['key'+v.id]={
           'light':v.light,
           'age':v.age
       };
   })
   console.log("test2map",map);

这样map就是一个对象,打印出来如下:

在这里插入图片描述

接下来遍历test1,并在id一致的对象中添加light和age变量,其余的值为0(注:map[‘key’+el.id] .light则为 map[key1].age的意思)

test1.forEach(el=>{
     el.light=(map['key'+el.id] || {}).light || "0";
     el.age=(map['key'+el.id] || {}).age  || '0';
 })
 console.log('test1组合',test1)

这样遍历出来id相等的对象为对应的值,不相等的则为默认0,这样就生成了一个合并部分字段的新数组

在这里插入图片描述
大家还有什么其他方法,欢迎评论区留言,互相学习!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值