将javascript对象与内部数组结合在一起(类似于foriegn键)

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应用程序

你可以使用Array#map()Array#filter()concat()

解释

arr1.map(a1=>{...}) =>根据arr1创build一个新的数组

arr2.filter(a2=>a2.prentId===a1.id) =>保留parentId所有项目等于当前的id

.map(a2=>a2.time) =>只保留time数组

let times是一个数组数组: [[1,2,3],[4,5,6]]

[].concat.apply([], times) =>展平times嵌套数组

 const arr1=[{id:1,name:"apple"},{id:2,name:"mango"}],arr2=[{parentId:1,time:[1,2,3]},{parentId:1,time:[4,5,6]},{parentId:1,time:[7,8,9]},{parentId:2,time:[11,12]}]; let result = arr1.map(a1=>{ let times = arr2.filter(a2=>a2.parentId===a1.id).map(a2=>a2.time); a1.time = [].concat.apply([], times); return a1; }); console.log(result); 
 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)