我有两个对象数组,如下所示。
对象1的数组----> [{locationId:1,locationName:"Bangalore"},{locationId:2, locationName:"Mumbai"}]
对象2的数组-----> [{baseId:1,baseUnit:"abc"},{baseId:2,baseUnit:""}]
有没有一种简短的方法,我可以使用第2个数组中的baseId从第一个数组中定位位置,并将其推送到角度为6的新对象数组中。我不想使用for循环。
答案 0 :(得分:1)
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);
答案 1 :(得分:1)
以下代码应满足您的要求(代码中的注释)
// 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);
}
});
答案 2 :(得分:1)
在这里您可以看到可以在.reduce
上使用Array
来遍历数组,同时生成一个新数组:
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]}), [])