Get sum of each row elements in an array of arrays JS

829 views Asked by At

I am trying to find the sum of each row of an array of arrays in JavaScript. My first attempt:

const rowSums = [];
for (let row = 0; row < matrix.length; row++) {
    let currentRowSum = 0;
    for (let col = 0; col < matrix[row].length; col++) {
        currentRowSum += matrix[row][col];
    }
    rowSums.push(currentRowSum);
}

Now I am trying to find the sums using the reduce() method. I don't see why this code doesn't work:

const rowSums = matrix.reduce((rowSums, currentRow) => {
        return rowSums.push(currentRow.reduce((sum, currentEl) => {
            return sum + currentEl;
        }, 0))
}, []);

You can use this input for reference: [[4, 5, 6], [6, 5, 4], [5, 5, 5]]

2

There are 2 answers

0
Ma3x On BEST ANSWER

It does not work because .push(...) returns the new length of the array instead of the array itself.

Push modifiers the array in place, so in your case you have to then return the same array with return rowSums.

const matrix = [[4, 5, 6], [6, 5, 4], [5, 5, 5]]

const rowSums = matrix.reduce((rowSums, currentRow) => {
    rowSums.push(currentRow.reduce((sum, currentEl) => {
        return sum + currentEl;
    }, 0))
    return rowSums;
}, []);

console.log(rowSums)

0
Ayman BOUIGADER On
const array = [[4, 5, 6], [6, 5, 4], [5, 5, 5]]
const result = array.map(subArr => {
return subArr.reduce((pre, item) => pre + item, 0)
})
console.log(result)