javascript - 嵌套的forEach循环将对象添加到现有对象javascript

标签 javascript arrays object lodash

有没有比我在下面所做的更好的方法来迭代两个对象数组?这样做似乎很麻烦。我正在使用 lodash。

var array1 = [
   {id:4356, name: 'James', sex: 'male'}, 
   {id:7899, name: 'Jimmy', sex: 'male'}, 
   {id:2389, name: 'Dawn', sex: 'female'}
];

var array2 = [
    {id:4356, salary: 1000, job: 'programmer'}, 
    {id:7899, salary: 2000, job: 'tester'}, 
    {id:2389, salary: 3000, job: 'manager'}
];

示例输出:

console.log(array1[0])
{
    id:4356, 
    name: James, 
    sex: male, 
    person: {
        id:4356, 
        salary: 1000, 
        job: programmer
    }
}

功能:

_.forEach(array1, function(item1) {
    _.forEach(array2, function(item2) {
       if(item1.id === item2.id){
          item1.person = item2;
        }
     });
});

最佳答案

由于您使用的是 lodash,因此您可以使用 _.find() method根据id属性在array2中找到对应的对象。

_.forEach(array1, function(item1) {
    item1.person = _.find(array2, {id: item1.id});
});

值得指出的是,如果找不到对象,这将导致未定义的 person 属性。如果这是一个问题,只需检查是否返回了一个对象:

_.forEach(array1, function(item1) {
    var obj = _.find(array2, {id: item1.id});
    if (obj) {
        item1.person = obj;
    }
});

如果没有 lodash,它会非常相似:

array1.forEach(function(item1) {
    item1.person = array2.find(function (item2) {
      return item2.id === item1.id;
    });
});

关于javascript - 嵌套的forEach循环将对象添加到现有对象javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798239/

相关文章:

javascript - 更改 <h2> 文本中的文本 我会使用 javascript 更改 </h2> 元素

javascript - 使用用户输入搜索数组

javascript - 如何将对象插入数组?

javascript - 在javascript中将另一个数组中的数组对象打印为特定格式

javascript - 如何在 JavaScript 中使用 indexOf 和 filter()

javascript - 搜索对象数组中的所有值

javascript - 获取 [object Object] 如何打印每个值

javascript对象解析并创建新的对象数组

javascript - 自定义 NodeJS Grunt 命令

ruby - 检查数组元素data[i][j][k]是否存在