Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 如何在es6中获得匹配的第二个对象数组_Javascript_Typescript_Ecmascript 6_Es6 Promise_Ecmascript 5 - Fatal编程技术网

Javascript 如何在es6中获得匹配的第二个对象数组

Javascript 如何在es6中获得匹配的第二个对象数组,javascript,typescript,ecmascript-6,es6-promise,ecmascript-5,Javascript,Typescript,Ecmascript 6,Es6 Promise,Ecmascript 5,我有两个对象数组:-更好的解决方案 array1= [{id:1,name:"samsung"},{id:2,name:"nokia"},{id:3,name:"Lg"}]; array2 = [{id:5,name:"samsung"},{id:2,name:"panasonics"},{id:7,name:"Lg"}]; 预期产出为: 如果第一个数组和第二个数组id匹配,则表示使用第二个数组名 在上面的示例中,ID2匹配,我们需要id:2,名称:panasonics o/p: 可以使用下面

我有两个对象数组:-更好的解决方案

array1= [{id:1,name:"samsung"},{id:2,name:"nokia"},{id:3,name:"Lg"}];
array2 = [{id:5,name:"samsung"},{id:2,name:"panasonics"},{id:7,name:"Lg"}];
预期产出为: 如果第一个数组和第二个数组id匹配,则表示使用第二个数组名 在上面的示例中,ID2匹配,我们需要id:2,名称:panasonics

o/p:

可以使用下面这样的简单循环(如果需要,也可以使用
for
循环,但是
.forEach()
更简单)

此代码循环通过
array1
,并循环通过该循环中的
array2
。然后检查ID是否相同。如果有,名称将附加到结果

const array1=[{id:1,名称:“三星”},{id:2,名称:“诺基亚”},{id:3,名称:“Lg”}];
const-array2=[{id:5,名称:“三星”},{id:2,名称:“panasonics”},{id:7,名称:“Lg”}];
让结果=[];
数组1.forEach(e1=>{
array2.forEach(e2=>{
if(e1.id==e2.id){
result.push(e2.name);
}
});
});

控制台日志(结果)使用
Array.concat()
组合数组,通过
id
将它们缩减为一个映射,然后使用
Array.from()
将映射的值转换为一个数组:

const unionBy=(字段,…数组)=>Array.from(
[].concat(…阵列)
.reduce((r,o)=>r.set(o.id,o),新映射)
.values()
);
const array1=[{id:1,名称:“三星”},{id:2,名称:“诺基亚”},{id:3,名称:“Lg”}];
const-array2=[{id:5,名称:“三星”},{id:2,名称:“panasonics”},{id:7,名称:“Lg”}];
const result=unionBy('id',array1,array2);
控制台日志(结果)像下面的代码一样使用map()和concat()

array1= [{id:1,name:"samsung"},{id:2,name:"nokia"},{id:3,name:"Lg"}];
array2 = [{id:5,name:"samsung"},  {id:2,name:"panasonics"},{id:7,name:"Lg"}];
var array3=array1.map(function(i,v){
if(array2[v].id==i.id){
return array2[v]
}
else return i
})
array4=array3.concat(array2);
console.log(array4);
array1= [{id:1,name:"samsung"},{id:2,name:"nokia"},{id:3,name:"Lg"}];
array2 = [{id:5,name:"samsung"},  {id:2,name:"panasonics"},{id:7,name:"Lg"}];
var array3=array1.map(function(i,v){
if(array2[v].id==i.id){
return array2[v]
}
else return i
})
array4=array3.concat(array2);
console.log(array4);