JSFiddle - React, Tailwind, and code Playground
JavaScript
const array1 = [["a1", "b1", "c1"], ["a2", "b2", "c2"], ["a3", "b3old", "c3old"], ["a4", "b4", "c4"]];
const array2 = [["a1", "b1", "c1"], ["a2", "b2", "c2"], ["a3", "b3", "c3"], ["a5", "b5", "c5"]];
const [obj1, obj2] = [array1, array2].map(e => e.reduce((o, r) => (o[r[0]] = r, o), {}));
const res = [
...array1.reduce((ar, r) => (obj2[r[0]] && ar.push(obj2[r[0]]), ar), []),
...array2.reduce((ar, r) => (obj1[r[0]] || ar.push(r), ar), []),
];
console.log(res)