JSFiddle - React, Tailwind, and code Playground
by Mariya Gnitetckaya
JavaScript
const arr1 = [
{id: 1, name: 'sdsds1'},
{id: 2, name: 'sdsds2'},
{id: 3, name: 'sdsds3'},
{id: 4, name: 'sdsds4'},
]
const arr2 = [
{id: 1, title: 'sdsds1'},
{id: 4, title: 'sdsds4'},
{id: 3, title: 'sdsds3'},
{id: 2, title: 'sdsds2'},
]
const result = [
{id: 1, name: 'sdsds1', title: 'sdsds1'},
{id: 4, name: 'sdsds2', title: 'sdsds2'},
{id: 3, name: 'sdsds3', title: 'sdsds3'},
{id: 2, name: 'sdsds4', title: 'sdsds4'},
]
function mergeArrays(array1, array2) {
const ids = [];
// O(n)
const arrayMap1 = array1.reduce((current, acc) => {
ids.push(current.id);
acc[current.id] = current;
return acc;
}, {});
// O(n)
let acc2 = {};
const arrayMap2 = array2.reduce((current, acc) => {
acc[current.id] = current;
return acc;
}, {});
const result = [];
// O(n)
console.log(arrayMap1)
ids.forEach((id) => {
result.push(Object.assign({}, arrayMap1[id], arrayMap2[id]));
});
console.log(result);
return result;
}
mergeArrays(arr1, arr2)