You could use the new Set which by nature does not allows to contain duplicate values.
There's a caveat though, since we cannot compare two different instances of an Object (even if the contents are the same) - those objects must first be stringified in order for the Set values uniqueness magic to kick in:
const a1 = [{ obj: "ABC" }, { obj: "XYZ" }, { obj: "LMN" }];
const a2 = [{ obj: "ABC" }, { obj: "MNO" }];
const ob2st = o => JSON.stringify(o);
const st2ob = s => JSON.parse(s);
const mergedSet = new Set([...a1.map(ob2st), ...a2.map(ob2st)]);
const a3 = [...mergedSet].map(st2ob);
console.log(a3);
also important to notice is that the newly created objects inside our new a3 array - modifying their property values, will no longer be reflected in the original a1 and a2 objects. This practice helps to maintain data integrity.
const found = arr.find((e => e.obj === j.obj); if (found) pushfindbecause nesting two linear operations (forEachandfind) results in a quadratic space-time complexity. see this Q&A for a guide on compound data equality.