【发布时间】:2020-12-16 21:06:43
【问题描述】:
我正在尝试减去两个矩阵,我有一个函数可以接收这些矩阵并返回一个已减去的新矩阵。 我在 node.js 中收到此错误:TypeError: (intermediate value).map is not a function
subtract(a, b) {
return new Matrix(a.rows, a.cols).map((_, i, j) => a.data[i][j] - b.data[i][j]);
}
这是我在主文件中使用的函数(注意:我已经有了该类的实例)。
let m = new Matrix(2, 2);
m.data[0] = [10, 11];
m.data[1] = [12, 13];
let n = new Matrix(2, 2);
n.data[0] = [1, 2];
n.data[1] = [3, 4];
mat.subtract(m, n);
这是我创建的类:
class Matrix {
constructor(rows, cols) {
this.rows = rows;
this.cols = cols;
this.index = 0;
this.rowCount = 0;
//this.matrixData = Array(this.rows).fill().map(() => Array(this.cols).fill(0));
this.data = Array(this.rows).fill().map(() => Array(this.cols).fill(0));
}
}
【问题讨论】:
-
.map((_, i, j) => ...)不会做你认为的那样。i是元素的索引,但j是对映射数组的引用,不是第二维索引。 -
创建一个新的
Matrix实例然后修改内部的.data是不好的,是滥用成员数据封装。注意.rowCount不受手动设置.data的影响。这是对如何正确使用类的误解。
标签: javascript arrays matrix matrix-multiplication subtraction