合并来自两个不同对象数组的具有相应键值的对象

保罗·西蒙斯

我有两个具有多个对象的数组

[
     {
         "name":"paul",
         "employee_id":"8"
     }
]

[
     {
         "years_at_school": 6,
         "department":"Mathematics",
         "e_id":"8"
     }
]

如何通过ES6或Lodash实现以下目标?

[
     {
         "name":"paul",
         "employee_id":"8"
         "data": {
             "years_at_school": 6
             "department":"Mathematics",
             "e_id":"8"
         }
     }
]

我可以合并,但不确定如何创建新的子对象并将其合并。

我尝试过的代码:

school_data = _.map(array1, function(obj) {
    return _.merge(obj, _.find(array2, {employee_id: obj.e_id}))
})

这样合并到顶级数组,如下所示(这不是我想要的):

{
     "name":"paul",
     "employee_id":"8"
     "years_at_school": 6
     "department":"Mathematics",
     "e_id":"8"
 }

这两个之间的连接器是"employee_id""e_id"

必须考虑到每个数组中它们可以是1000个对象,并且匹配这些对象的唯一方法是by"employee_id""e_id"

马克·迈耶

为了匹配employee_ide_id您应该遍历第一个数组并创建一个键为的对象employee_id然后,您可以遍历第二个数组并将数据添加到有问题的特定ID中。这是一个向每个数组添加一个额外项目的示例:

let arr1 = [
    {
        "name":"mark",
        "employee_id":"6"
    },
    {
        "name":"paul",
        "employee_id":"8"
    }
]

let arr2 = [
    {
        "years_at_school": 6,
        "department":"Mathematics",
        "e_id":"8"
    },
    {
        "years_at_school": 12,
        "department":"Arr",
        "e_id":"6"
    }
    
]

// empObj will be keyed to item.employee_id 
let empObj = arr1.reduce((obj, item) => {
    obj[item.employee_id] = item
    return obj
}, {})

//  now lookup up id and add data for each object in arr2
arr2.forEach(item=>
    empObj[item.e_id].data = item
)

// The values of the object will be an array of your data
let merged = Object.values(empObj)
console.log(merged)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将具有不同对象类型的两个不同数组合并为一个

来自具有相同键的两个不同对象的 ruby/merge-sum 值

将来自两个不同对象键的值组合为一个对象键值

合并/组合来自不同领域的两个对象数组

如何合并两个不同对象的列表?

如何合并两个不同对象的列表?

具有两个以不同对象作为父对象的构造函数的类

比较两个相同长度但在JS中内部具有不同对象ID的数组

Typescript 合并了数组中具有不同负载的两个对象的类型

javascript比较具有不同对象的两个数组

合并两个具有嵌套 id 的对象数组

在具有相同属性的两个不同对象上使用equal()方法

从具有相同成员的两个不同对象中进行条件选择

两个不同对象的总和

如何将具有唯一字段的两个不同对象列表合并到一个单独的列表中?

基于键值比较合并两个对象数组

具有指向相同对象的具有不同值的两个指针是否是未定义的行为?

JavaScript,循环具有不同对数键值的对象

如何合并来自两个相同长度的不同数组的对象?

两个不同对象的两个数组的并集

创建一个函数,该函数接受具有相同方法的两个不同对象

通过两个具有不同键的键合并同一数组中的对象

比较两个对象数组,其中每个数组中的对象具有不同的属性

合并两个对象数组,并跳过具有相同ID属性的对象

Javascript for / in循环-联接来自两个不同对象的项目?

如何将来自不同数组的两个匹配对象合并为一个对象?

在地址比较下,具有自动存储持续时间的两个不同对象是否可以相等?

合并两个具有不同值的不同数组

在一个对象数组中结合两个不同对象数组的不同属性