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)