1

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 Answers 2

1

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)

Sign up to request clarification or add additional context in comments.

Comments

0
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)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.