如何比较两个数组并在id匹配的情况下更改名称?

我有一个学生数组,如下所示

student=[{id:1,name:'Sam',age:23},{id:2,name:'Jolia',age:23},{id:3,name:'Peter',age:23}]

我还有另一个包含了一些学生的最新年龄值,比如下面的例子。

updated=[{id:2,age:25},{id:3,age:21}]

在本例中,我想通过这两个数组的Id找到交叉点,然后用更新后的数组改变学生数组的年龄值。

预期结果

 student=[{id:1,name:'Sam',age:23},{id:2,name:'Jolia',age:25},{id:3,name:'Peter',age:21}]

id:2和id:3的值发生了变化,因为update包括这些id值。

我试着用map来迭代两个数组,但没有成功,而且我觉得不合理。

updated.map(e=>{
   if(e.id==student.map(j=>{j.id})){
     e.age=j.age;
   }
 }) 

解决方案:

let updated=[{id:2,age:25},{id:3,age:21}];
let student=[{id:1,name:'Sam',age:23},{id:2,name:'Jolia',age:23},{id:3,name:'Peter',age:23}];
student.forEach(e =>{
  let idx = updated.findIndex(u => u.id == e.id);
  if(idx >=0) {
      e.age = updated[idx].age;
  }
});

console.log(student);

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何用matplotlib ArtistAnimation绘制直方图或条形动画?

2022-4-21 11:06:38

解决方案

无法登录sparkR docker容器

2022-4-21 11:06:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索