I've 2 arrays:
address - array of object with id
pickup - array of object with id
And I need connect these arrays into 1 by id.
example:
address = [
{id: "123", name: "any city street"},
{id: "124", name: "any city street"},
{id: "125", name: "any city street"},
{id: "126", name: "any city street"}
];
pickups = [
{id: "123", time: "10:20"},
{id: "124", time: "11:30"},
{id: "125", time: "12:00"},
{id: "126", time: "12:20"}
];
And I need connect it by id with result like:
{id: "124", name: "name smth", time: "11:30"}
I mean about map this 2 arrays into one
address = [
{id: "123", name: "any city street"},
{id: "124", name: "any city street"},
{id: "125", name: "any city street"},
{id: "126", name: "any city street"}
];
pickups = [
{id: "123", time: "10:20"},
{id: "124", time: "11:30"},
{id: "125", time: "12:00"},
{id: "126", time: "12:20"}
];
const result = pickups.map(pickup => {
let match = address.find(addr => addr.id == pickup.id);
return {
id : pickup.id,
time: pickup.time,
name : match.name,
}
})
console.log(result);
Or if you really really like short code:
pickups.map(el => ({ ...el, ...address.find(addr => addr.id == el.id)}))
Be aware that this works fine only if there is always a match between pickups and address
You could do:
let address = [
{id: "123", name: "any city street"},
{id: "124", name: "any city street"},
{id: "125", name: "any city street"},
{id: "126", name: "any city street"}
];
let pickups = [
{id: "123", time: "10:20"},
{id: "124", time: "11:30"},
{id: "125", time: "12:00"},
{id: "126", time: "12:20"}
];
let obj = {};
for (let i=0; i<address.length; i++) {
obj[address[i].id] = obj[address[i].id] || {id: address[i].id};
obj[address[i].id].name = address[i].name;
}
for (let i=0; i<pickups.length; i++) {
obj[pickups[i].id] = obj[pickups[i].id] || {id: pickups[i].id};
obj[pickups[i].id].time = pickups[i].time;
}
let result = Object.keys(obj).map(id => obj[id]);
console.log(result);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With