Поэлементные арифметические операции в зубчатых многомерных массивах в JavaScript - PullRequest
2 голосов
/ 27 марта 2019

Я хочу выполнить некоторые поэлементные арифметические или математические операции с двумерными зубчатыми массивами без выравнивания выходного массива;в этом примере массив C.

const A = [[1, 2, 30, 4],[5, 16, 7],[8, 9, 12, 14, 90]];
const B = [[45, 60, 15, 35],[45, 55, 75],[12, 34, 80, 65, 90]];
const C = [];
for (let j = 0; j < A.length; j++) {
    for (let k = 0; k < A[j].length; k++) {
         C.push(0.5*A[j][k] + B[j][k]);
    }
}

console.log(C)

Я пытался использовать цикл for, но выход C выравнивается.Кроме того, я использовал библиотечную функцию mathjs, но кажется, что поэлементные арифметические операции в этой библиотеке работают только для не зубчатых многомерных массивов.

1 Ответ

2 голосов
/ 27 марта 2019

Вы можете отобразить внутренние массивы и получить новый массив массивов с требуемыми значениями.

const
    a = [[1, 2, 30, 4],[5, 16, 7],[8, 9, 12, 14, 90]],
    b = [[45, 60, 15, 35],[45, 55, 75],[12, 34, 80, 65, 90]],
    c = a.map((inner, i) => inner.map((v, j) => 0.5 * v + b[i][j]));

console.log(c);
.as-console-wrapper { max-height: 100% !important; top: 0; }
...