Как отмечает @HereticMonkey, этот вопрос, вероятно, лучше подходит сообществу Code Review , поскольку StackOverflow обычно предназначен для получения помощи при решении конкретных проблем, а не для обсуждения качества функционального кода.Просто помните об этом в следующий раз.
Как говорится, да, здесь можно использовать Array#reduce
, но это не самый простой способ.Две петли и некоторая деструктура - все, что вам нужно.
var array1 = [{'2019-07-13': 1, '2019-07-14': 4, '2019-07-15': 7}];
var array2 = [{'2019-07-13': 5, '2019-07-14': 8, '2019-07-15': 6}];
var array3 = [{'2019-07-13': 2, '2019-07-14': 1, '2019-07-15': 9}];
let mergedInput = [...array1, ...array2, ...array3];
let temp = {};
for (a of mergedInput) {
for (const [k, v] of Object.entries(a)) {
temp[k] = (temp[k]||0)+a[k];
}
}
console.log(temp);
Если вам все еще интересно увидеть реализацию Array#reduce
, посмотрите мой первый ответ в истории изменений 1015 *.