how to override javascript array of objects?

I am trying to override item and add new item/object in given array of objects .

here is my code

const replaceOrAdd = (sourceArray, overrideArray, key = "name") => {
  const existingIndex = sourceArray.findIndex(
    (item) => item[key] === overrideArray[key]
  );

  if (existingIndex >= 0) {
    sourceArray[existingIndex] = overrideArray;
  } else {
    sourceArray.push(overrideArray);
  }

  return sourceArray;
};

const source = [
  {
    label: "WORK_ORDER_NUMBER",
    name: "job_order_number",
    visible: true,
  },
  {
    label: "WORK_ORDER_VALIDITY_DATE",
    name: "validity_date",
    visible: true,
  },
  {
    label: "BOOKING_ID",
    name: "booking_number",
    visible: true,
  },
  {
    label: "BOOKING_TYPE",
    name: "booking_type",
    rules: {},
    visible: true,
  },
];

const replace = [
  {
    label: "WORK_ORDER_NUMBER",
    name: "job_order_number",
    visible: false,
  },
  {
    label: "BOOKING_ID",
    name: "booking_number",
    visible: false,
  },
  {
    label: "XXXXX",
    name: "XXXXXX",
    visible: false,
  },
];

replaceOrAdd(source, replace);

console.log(source);

Expected output :

 [
  {
    label: "WORK_ORDER_NUMBER",
    name: "job_order_number",
    visible: false,
  },
  {
    label: "WORK_ORDER_VALIDITY_DATE",
    name: "validity_date",
    visible: true,
  },
  {
    label: "BOOKING_ID",
    name: "booking_number",
    visible: false,
  },
  {
    label: "BOOKING_TYPE",
    name: "booking_type",
    rules: {},
    visible: true,
  },
  {
    label: "XXXXX",
    name: "XXXXXX",
    visible: false,
  },
];

I am trying to override in the source array if “name” key match .. if they there is extra object in replace object . I am trying to add that object.

Here in example name: “job_order_number”, , name: “booking_number”, match .. I want to override this object and add this object name: “XXXXXX”, as it is not found