const arrayList1 = [
{ type: "A", any: 11, other: "ab", props: "1" },
{ type: "B", any: 22, other: "bc", props: "2" }, // same type
{ type: "C", any: 33, other: "df", props: "3" }
];
const arrayList2 = [
{ type: "D", any: 44, other: "aa", props: "11" },
{ type: "B", any: 22, other: "bb", props: "2----2" , x: 10}, // same type
{ type: "E", any: 44, other: "cc", props: "33" }
];
const result = Object.values(
[].concat(arrayList1, arrayList2)
.reduce((r, c) => (r[c.type] = Object.assign((r[c.type] || {}), c), r), {})
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }