javascript - 如何比较两个对象数组并更改在两个数组中找到的对象的值?

标签 javascript

假设我有两个对象数组:

let array1 = [
          {
           id: 1,
           name: 'snow'
          },
          {
           id: 4,
           name: 'jo'
          },
          {
           id: 8,
           name: 'bran'
          },
          {
           id: 12,
           name: 'gondo'
          },
          {
           id: 13,
           name: 'peter'
          }
        ]

let array2 = [
      {
       id: 3,
       name: 'brim'
      },
      {
       id: 4,
       name: 'not-jo'
      },
      {
       id: 8,
       name: 'not-bran'
      },
      {
       id: 13,
       name: 'spleen'
      }
    ]

我想在 array2 中找到所有通过 id 与 array1 匹配的对象,并更改它们的名称值以匹配 array1 中的名称值。

在我的伪代码中:

array1.forEach((person)=> {
 if(person.id is equal to person.id in array2){
   person.name = person.name in array1
 }
})

最佳答案

试试这个:

array2.map(function(x){ 
       var result=array1.filter(a1=> a1.id==x.id);
       if(result.length>0) { x.name=result[0].name;}
       return x })

关于javascript - 如何比较两个对象数组并更改在两个数组中找到的对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45230436/

相关文章:

javascript - Luci openwrt的XHR.get请求中如何传递数组?

javascript - 在Javascript中将数字与集合中最接近的数字匹配

javascript - HTTP 状态 500 – 内部服务器错误,同时使用 esign genie api 在 vm 中下载 excel 文件

javascript - 删除 Google Analytics Cookie 和欧盟电子隐私法

c# - 使用 KendoUI Grid,如何将可选图像或图标添加到行模板中?

javascript - 无法将数据从 firebase 实时数据库检索到网络应用程序

javascript - 有人知道如何根据 javascript 中的颜色生成具有新亮度的 4 种颜色吗?

javascript - 捕获 iframe 加载完成事件

javascript - 如何在 Internet Explorer 中获取 javascript 堆栈跟踪。 e.stack 返回 "Undefined"

javascript - 如何将sightly变量作为参数传递给javascript