Создание функции, которая объединит все параметры объекта - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу создать функцию, которая может принимать любое количество аргументов.Я могу сделать функцию с аргументами fix, но я не могу решить с n аргументами.

Пример:

const first = { x: 2, y: 3};
const second = { a: 70, x: 4, z: 5 };
const third = { x: 0, y: 9, q: 10 };

const firstSecondThird = extend(first, second, third);
// { x: 2, y: 3, a: 70, z: 5, q: 10 }

const secondThird = extend(second, third);
// { a: 70, x: 4, z: 5, y: 9, q: 10 }`

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете использовать Параметры отдыха , чтобы получить все параметры в массиве, а затем использовать синтаксис распространения внутри 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...