Вы можете использовать Параметры отдыха , чтобы получить все параметры в массиве, а затем использовать синтаксис распространения внутри reduce
для их рекурсивного объединения:
const first = { x: 2, y: 3},
second = { a: 70, x: 4, z: 5 },
third = { x: 0, y: 9, q: 10 };
const extend = (...params) => params.reduce((r,p) => ({ ...r, ...p }), {})
console.log(extend(first, second, third))
console.log(extend(second, third))
Если вы хотите отдать предпочтение свойствам более ранних объектов, то вам нужно reverse
arguments
перед использованием reduce
:
const first = { x: 2, y: 3},
second = { a: 70, x: 4, z: 5 },
third = { x: 0, y: 9, q: 10 };
const extend = (...params) => params.reverse().reduce((r, p) => ({ ...r, ...p}), {})
console.log(extend(first, second, third))
console.log(extend(second, third))