Вы можете создать функцию с методом reduce
, которая будет принимать параметры столбцов и строк и вырезать их из исходных массивов, но для внутреннего массива вы просто меняете порядок элементов в обратном порядке.
const matrix = [
[1, 1, 3, 3, 5],
[-6, -7, 2, -3, -1],
[3, 0, -4, 5, 9],
[7, -7, 0, 1, 0],
[-7, -6, -4, -4, 9, 11, 40],
]
function sum(matrix, row, col) {
return matrix.slice(0, row).reduce((r, e) => {
[...e].reverse().slice(0, col).forEach(c => r += c)
return r;
}, 0)
}
console.log(sum(matrix, 3, 3))
Или вы можете срезать с конца внутреннего массива и использовать еще одно уменьшение.
const matrix = [
[1, 1, 3, 3, 5],
[-6, -7, 2, -3, -1],
[3, 0, -4, 5, 9],
[7, -7, 0, 1, 0],
[-7, -6, -4, -4, 9, 11, 40],
]
function sum(matrix, row, col) {
return matrix.slice(0, row).reduce((r, e) => {
return r + e.slice(-col).reduce((a, c) => a + c, 0)
}, 0)
}
console.log(sum(matrix, 3, 3))