javascript - 比较两个对象数组并向匹配的对象添加新属性

标签 javascript arrays object

我有两个像这样的对象数组:

let data1 = [ { userid_b: 'dan12345' }, { userid_b: 'emma12345' } ]
let data2 =[ 
  { username: 'dan', userid: 'dan12345' },
  { username: 'johndoe', userid: 'john12345' },
  { username: 'emma', userid: 'emma12345' },
  { username: 'Bob', userid: 'bob12345' },
  { username: 'Sam', userid: 'sam12345' } 
]

我想比较userid_buserid这两个,如果它们相同,我想向data2添加一个新属性。

所以我想要这样的结果:

let data2 =[ 
  { username: 'dan', userid: 'dan12345', newAttribute: true },
  { username: 'johndoe', userid: 'john12345' },
  { username: 'emma', userid: 'emma12345', newAttribute: true },
  { username: 'Bob', userid: 'bob12345' },
  { username: 'Sam', userid: 'sam12345' } 
]

我怎样才能实现这个目标?

最佳答案

循环两个数组并比较值,必要时进行赋值:

var data1 = [
  { userid_b: 'dan12345' },
  { userid_b: 'emma12345' }
];

var data2 = [ 
  { username: 'dan', userid: 'dan12345' },
  { username: 'johndoe', userid: 'john12345' },
  { username: 'emma', userid: 'emma12345' },
  { username: 'Bob', userid: 'bob12345' },
  { username: 'Sam', userid: 'sam12345' } 
];

// Loop the main array
for (var i = 0; i < data2.length; i++) {
  // Loop the second array
  for (var j = 0; j < data1.length; j++) {
    // If the user id matches
    if (data2[i].userid == data1[j].userid_b) {
      // Add the attribute
      data2[i].newAttribute = true;
      // Break out of the the 'j' loop to stop unnecessary iterations
      break;
    }
  }
}

console.log(data2);

关于javascript - 比较两个对象数组并向匹配的对象添加新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40198802/

相关文章:

javascript:Array.sort() 在大型数组上会失败吗?

javascript - 类型 'X' 的参数不可分配给类型 'Y' 的参数

java - 为什么我的 ArrayList 创建一个对象的两个副本?

javascript - 如果 Angular 属性为空,如何保留静态内容?

c# - Javascript Com 数组组件给我错误的数组值

javascript - 我知道回调函数是异步运行的,但是为什么呢?

javascript - JS 获取 DOM 之外元素的宽度和高度

php - 获取数组中重复值的键

php - Codeigniter 的面向对象方案

ios - Xcode 7 中的对象库未显示所有可能的对象