Javascript 将对象值从一个对象数组移动到另一个对象数组
我有两个对象数组,需要将值从第二个数组移到具有相同id的第一个数组对象Javascript 将对象值从一个对象数组移动到另一个对象数组,javascript,arrays,object,Javascript,Arrays,Object,我有两个对象数组,需要将值从第二个数组移到具有相同id的第一个数组对象 array1 = [{id:1, location: 'A'},{id:2, location: 'B'},{id:3, location: 'C'},{id:4, location: 'D'}] array2 = [{id:1, value: 123},{id:2, value: 5466},{id:3, value: 89484},{id:4, value: -4.215}] 我试着把它们合并起来,但结果却是重复的对
array1 = [{id:1, location: 'A'},{id:2, location: 'B'},{id:3, location: 'C'},{id:4, location: 'D'}]
array2 = [{id:1, value: 123},{id:2, value: 5466},{id:3, value: 89484},{id:4, value: -4.215}]
我试着把它们合并起来,但结果却是重复的对象
我多么希望它看起来像
array1 = [{id:1, location: 'A', value: 123},{id:2, location: 'B', value: 5466},{id:3, location: 'C', value: 89484},{id:4, location: 'D', value: -4.215}]
您可以使用遍历基本数组,同时使用查找另一个数组以匹配id
:
const array1=[{id:1,位置:'A'},{id:2,位置:'B'},{id:3,位置:'C'},{id:4,位置:'D'}],
array2=[{id:1,value:123},{id:2,value:5466},{id:3,value:89484},{id:4,value:-4.215}],
result=array1.map(o=>({…o,…array2.find(_o=>_o.id==o.id)}))
console.log(结果)
.as控制台包装{最小高度:100%;}
请查找下面的代码段
array1=[{id:1,位置:'A'},{id:2,位置:'B'},{id:3,位置:'C'},{id:4,位置:'D'}]
array2=[{id:1,值:123},{id:2,值:5466},{id:3,值:89484},{id:4,值:-4.215}]
让result=array1.map(obj=>{
返回{
…array2.filter(obj2=>obj2.id===obj.id)[0],
…obj
}
})
console.log(结果)
这应该可以:
array1.map( // build a second array with the new objects
el => Object.assign( // create the merged object
el, // from the current object
array2.find( // with the object in array2 with the same id
obj => obj.id == el.id
)
)
)
如果索引相同,您可以像下面那样映射和传播对象
const array1=[{id:1,位置:'A'},{id:2,位置:'B'},{id:3,位置:'C'},{id:4,位置:'D'}];
常量array2=[{id:1,值:123},{id:2,值:5466},{id:3,值:89484},{id:4,值:-4.215}];
const merged=array1.map((a,i)=>({…a,…array2[i]}));
console.log(合并)
这将不必要地在整个array2
中循环,即使已找到匹配项(唯一)。因此,从性能的角度来看,它更为优化。这也会在幕后变异array1
,因此使用.map()
而不是.forEach()
实际上没有多大意义。如果需要保持不变,则需要执行Object.assign({},el,array2.find..