Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象值从一个对象数组移动到另一个对象数组_Javascript_Arrays_Object - Fatal编程技术网

Javascript 将对象值从一个对象数组移动到另一个对象数组

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}] 我试着把它们合并起来,但结果却是重复的对

我有两个对象数组,需要将值从第二个数组移到具有相同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', 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..