@beta-it

Как сложить элементы в массиве объектов (поэлементно)?

Суть такая есть массив объектов:
a = [
{val1: 1, val2: 1},
{val1: 2, val2: 2},
{val1: 3, val2: 3}
];


Собственно вопрос в том как получить сумму val1 и val2 всего массива "a"
  • Вопрос задан
  • 3003 просмотра
Решения вопроса 4
0xD34F
@0xD34F Куратор тега JavaScript
const sum = arr =>
  arr.reduce((acc, n) => {
    Object.entries(n).forEach(([ k, v ]) => acc[k] = (acc[k] || 0) + v);
    return acc;
  }, {});


const result = sum(a);
Ответ написан
Комментировать
NightmareZz
@NightmareZz
Нищий разработчик из Симферополя
a.reduce((acc, obj) => { acc[0] += obj.val1; acc[1] += obj.val2; return acc; }, [0, 0]);
Ответ написан
Комментировать
@s-jet
Или по рабоче-крестьянски
let summ = 0;

for (let i = 0;i<a.length;i++) {
  summ += a[i].val1 + a[i].val2;
}
Ответ написан
Комментировать
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Я бы предпочёл такое решение задачи, основанное исключительно на ES-5 и предоставляющее суммы всех свойств по отдельности:
var a = [
{val1: 1, val2: 1},
{val1: 2, val2: 2},
{val1: 3, val2: 3}
];

function sumProps (arr) {
	var out = {};
	arr.forEach(function(i) {
		for (var p in i) {
			if (i.hasOwnProperty(p)) {
				out[p] = out[p] || 0;
				out[p] += i[p];
			}
		}
	});
	return out;
}
console.log(sumProps (a));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы