Как найти диагональное значение - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу найти сумму значений массива. Массив может быть таким

const maxtrix = [
    [1, 2, 3, 4],
    [5, 10, 7, 5],
    [8, 11, 15, 9],
    [6, 19, 4, 14],
]

Я хочу найти значение типа [4, 7, 11, 6] в массиве.

Я пытался сделать это, но не смог организовать код.

Вот код, который я написал:

const maxtrix = [
    [1, 2, 3, 4],
    [5, 10, 7, 5],
    [8, 11, 15, 9],
    [6, 19, 4, 14],
]

// right - 4, 7, 11, 6

let left = 0

let rowLenth = maxtrix.length - 1;
let colLength = maxtrix[0].length - 1;


maxtrix.forEach((a, r) => {
    a.forEach((b, c) => {
        console.log(maxtrix[r][colLength - c])
    })
})

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Если вы пытаетесь получить [4, 7, 11, 6] в массиве, а не просто записать значения в консоль, map() - это то, что вам нужно. map() предоставляет индексное значение для функции, которую можно использовать для получения правильного значения из каждой строки:

const matrix = [
    [1, 2, 3, 4],
    [5, 10, 7, 5],
    [8, 11, 15, 9],
    [6, 19, 4, 14],
]
let diagonal = matrix.map((row, index, self) => row[self.length - 1 - index])
console.log(diagonal)

Вы упомянули, что хотите получить сумму. Вы можете сделать почти то же самое, но вместо этого используйте reduce, чтобы получить их сумму:

const matrix = [
    [1, 2, 3, 4],
    [5, 10, 7, 5],
    [8, 11, 15, 9],
    [6, 19, 4, 14],
]
let sumOfDiagonals = matrix.reduce((sum, row, index, self) => sum + row[self.length - index - 1], 0)

console.log(sumOfDiagonals)
0 голосов
/ 12 сентября 2018

У вас правильная идея.Отключите foreach для столбцов, потому что вам нужно только одно значение в строке.

Попробуйте это:

const maxtrix = [
    [1, 2, 3, 4],
    [5, 10, 7, 5],
    [8, 11, 15, 9],
    [6, 19, 4, 14],
]

let colLength = maxtrix[0].length - 1;
maxtrix.forEach((a, r) => {
    // In diagonal values c = r
    let c = r;
    // But we're doing reverse diagonal values
    c = colLength - c;
    console.log(maxtrix[r][c])
})

Та же идея, что и у вас, но мы используем c = r из определения диагональных элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...