我有两个具有多个对象的数组
[
{
"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_id
,e_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] 删除。
我来说两句