Join Two Arrays by ID

Medium

Solution

type ValueWithID = unknown & {
  id: number;
};
 
export function join(arr1: ValueWithID[], arr2: ValueWithID[]): ValueWithID[] {
  const result: Record<number, ValueWithID> = {};
  arr1.forEach((value) => {
    result[value.id] = value;
  });
  arr2.forEach((value) => {
    result[value.id] = {
      ...(result[value.id] || {}),
      ...value,
    };
  });
 
  return Object.values(result);
}