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((acc, current, {}) => {
  	console.log(acc)
    acc[current.id] = current;
    ids.push(current.id);
  }, {});
  // O(n)
  const arrayMap2 = array2.reduce((acc, current, {}) => {
    acc[current.id] = current;
  }, {});
  const result = [];
  // O(n)
  ids.forEach((id) => {
    result.push(Object.assign({}, arrayMap1[id], arrayMap2[id]));
  });

console.log(result);
  return result;
}

mergeArrays(arr1, arr2)