Уменьшите массив объектов с помощью клавиш Dynami c - PullRequest
0 голосов
/ 23 января 2020

Кажется, это должно быть довольно просто, но мой поиск ничего не дал.

У меня есть массив объектов, который выглядит следующим образом:

[{"A":4,"B":2},{"A":2,"B":1},{"A":3,"B":1},{"A":2,"B":1,"C":1}]

Я хочу свести это к чему-то, что выглядит следующим образом (то, что я бы назвал функцией сокращения):

{"A": 11, "B": 5, "C": 1}

Начальный массив объектов является продуктом преобразования гораздо большего и более сложного начального объекта , Важной деталью является то, что сами ключи имеют произвольные значения (т. Е. Вы можете видеть «D» и «E», но сам код должен игнорировать это). Я дошел до этого, используя Underscore. js, и я надеюсь найти такое же чистое решение в функциональном стиле.

1 Ответ

0 голосов
/ 23 января 2020

Получить пары ключ / значение и обновить сумму.

var data = [{ A: 4, B: 2 }, { A: 2, B: 1 }, { A: 3, B: 1 }, { A: 2, B: 1, C: 1 }],
    result = data.reduce((r, o) => (Object.entries(o).forEach(([k, v]) => r[k] = (r[k] || 0) + v), r), {});

console.log(result);
...