function combine(a = {}, b = {}, c = {}) {
Читаю текст задачи сверху вниз, снизу вверх, так, сяк, наперекосяк, и никак не могу найти там место, где говорится, что объектов в функцию будет передаваться не больше трёх.
Как обработать заранее неизвестное количество аргументов?
Можно
собрать их в массив:
const combine = (...arr) => arr
.flatMap(Object.entries)
.reduce((acc, [ k, v ]) => (acc[k] = (acc[k] ?? 0) + v, acc), {});
Или, воспользоваться
уже готовым массивоподобным объектом:
function combine() {
const result = {};
for (const n of arguments) {
for (const k in n) {
if (n.hasOwnProperty(k)) {
if (!result.hasOwnProperty(k)) {
result[k] = 0;
}
result[k] += n[k];
}
}
}
return result;
}