[英]How to Compare and get the values two Array of objects?
我有两个对象数组,如下所示。
对象1的数组----> [{locationId:1,locationName:"Bangalore"},{locationId:2, locationName:"Mumbai"}]
对象2的数组-----> [{baseId:1,baseUnit:"abc"},{baseId:2,baseUnit:""}]
有没有什么短方法可以使用第2个数组中的baseId将第一个数组中的locationName定位到角度为6的新对象数组中?我不想使用for循环。
var a = [{locationId:1,locationName:"Bangalore"},{locationId:2, locationName:"Mumbai"}]; var b = [{baseId:1,baseUnit:"abc"},{baseId:2,baseUnit:""}] var c = []; a.map(obj => { b.map(res => { if (obj.locationId == res.baseId) { c.push({ "locationName": obj.locationName, "baseUnit": res.baseUnit }); } }); }); console.log(c);
以下代码应满足您的要求(代码中的注释)
// Go throught first array
newArray = array1.map(location => {
// Look for corresponding object in second array based on Ids
const foundBase = array2.find(base => base.baseId === location.locationId);
// If the object is found, return combined object
if(foundBase){
return Object.assign(location, foundBase);
}
});
在这里您可以看到,可以在Array
上使用.reduce
来迭代该数组,同时生成一个新数组:
let array1 = [{locationId:1,locationName:"Bangalore"},{locationId:2, locationName:"Mumbai"}]
let array2 = [{baseId:1,baseUnit:"abc"},{baseId:2,baseUnit:""}]
// Combine objects in array
array1.reduce((newArray, _, index) => newArray.concat({...array1[index], ...array2[index]}), [])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.