I want to sum an object value by key. I have an array of arrays of objects.
Here: [ 1: https://stackoverflow.com/questions/48550691/how-to-sum-all-of-values-from-specific-key-in-object][1]
I found this:
var arr = [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}];
console.log(arr.reduce((total, obj) => obj.credit + total,0));
// 3
I have multiple arrays of objects, thus:
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}],
[{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}]
];
for (var i=0; i<arr2.length; i++) {
console.log( arr2[i].reduce((total, arr2[i]) => arr2[i].credit + total,0)) ;
}
When trying to access a specific array I get this error message from Google Chrome "Uncaught SyntaxError: Invalid destructuring assignment target".
The editor I am using, Sublime, highlights a syntax error.
I don't know how to fix it. I have googled without success.
I want to get the total for each iteration of the loop. In the example given, that would : 3 then 6
TIA.
Flatten the array, then .reduce
to sum.
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}],
[{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}]
];
console.log(arr2.flat().reduce((total, obj) => obj.credit + total,0));
If you don't want to flatten, you'll have to use a nested .reduce
for the inner arrays too.
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}],
[{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}]
];
console.log(
arr2.reduce(
(total, subarr) => total + subarr.reduce(
(a, { credit }) => a + credit,
0
),
0
)
);
If you don't care about the full total but only about each subarray's total, then just perform the simple .reduce
for every element of the array.
var arr2 = [ [{ 'credit': 1, 'trash': null }, { 'credit': 2, 'trash': null}],
[{ 'credit': 3, 'trash': null }, { 'credit': 3, 'trash': null}]
];
for (const subarr of arr2) {
console.log(subarr.reduce((total, obj) => obj.credit + total,0));
}