Obj1 = [
{
'id':1,
'name':'apple'
},
{
'id':2,
'name':'mango'
}
]
Obj2 = [
{
'parentId' : 1,
'time': [1,2,3]
},
{
'parentId' : 1,
'time': [4,5,6]
},
{
'parentId' : 1,
'time': [7,8,9]
},
{
'parentId' : 2,
'time': [11,12]
}
]
result = [
{
'id':1,
'name':'apple',
'time': [1,2,3,4,5,6,7,8,9]
},
{
'id':2,
'name':'mango',
'time': [11,12]
},
]
如何组合这两个具有相同键的对象 NodeJs或Javascript并得到以下结果对象。
不使用Jquery或任何其他框架。
注意:NodeJs应用程序
答案 0 :(得分:2)
您可以使用Array#map()
,Array#filter()
和concat()
<强>阐释强>
arr1.map(a1=>{...})
=&gt;根据{{1}}
arr1
=&gt;保留arr2.filter(a2=>a2.prentId===a1.id)
等于当前parentId
id
=&gt;只保留.map(a2=>a2.time)
数组
time
是一个数组的数组:let times
[[1,2,3],[4,5,6]]
=&gt;展平[].concat.apply([], times)
嵌套数组
times
答案 1 :(得分:0)
const obj1=[{'id':1,'name':'apple'},{'id':2,'name':'mango'}];
const obj2=[{'parentId':1,'time':[1,2,3]},{'parentId':1,'time':[4,5,6]},{'parentId':1,'time':[7,8,9]},{'parentId':2,'time':[11,12]}];
const res = obj1.map(el => Object.assign(el, {time: obj2.filter(i => el.id === i.parentId).map(({time}) => time).join(',').split(',')}))
console.log(res)
&#13;