在javascript中创建矩阵数据类

在javascript中创建矩阵数据类,javascript,matrix,Javascript,Matrix,我试图创建一个矩阵来存储数据值 这就是我到目前为止所做的: var Matrix = new function(rows, columns) { var matrix = [[]]; var i,j; this.matrix[i].length == columns; this.matrix[i][j].length == rows; if(matrix[i] === undefined){ matrix[i] == 0; } } Matrix.prototype = { addVal

我试图创建一个矩阵来存储数据值

这就是我到目前为止所做的:

var Matrix = new function(rows, columns) {
var matrix = [[]];
var i,j;
this.matrix[i].length == columns;
this.matrix[i][j].length == rows;
if(matrix[i] === undefined){
    matrix[i] == 0;
}
}

Matrix.prototype = {
addValue: function (i,j,value) {
this.matrix[i][j].push(value);
console.log(this);
}
}

var m = new Matrix ();

m.addValue(1,1,"this is where I place it");
console.log(m);
我无法摆脱这个错误:

TypeError:无法读取undefined的属性“undefined”


任何建议或更正?

一个非常简单的矩阵可以是:

Matrix = function() {
    this.rows = [];
}

Matrix.prototype = {

    put : function (row, column, value) {
        if (this.rows[row] === undefined) {
            this.rows[row] = [];
        }

        var row = this.rows[row];

        row[column] = value;

    },

    get : function (row, column) {
        return this.rows[row][column];
    }

}

i
j
从未在构造函数中定义。但是,如果这就是它的全部功能,我建议将其命名为其他名称,为同样具有某些运算(如加法、乘法、标量乘法、求逆、取行列式等)的数学构造保留“矩阵”在源代码中命名和在现实世界中命名是不同的事情。如果在程序中,它是唯一接近真实矩阵的东西,我认为没有理由不称它为“矩阵”。另一方面,如果你想写一个真正的数学矩阵,能够进行所有的计算,我认为这是一个很好的基础,所以以后它肯定可以是一个真正的矩阵。随着代码的不断发展,一个好主意,也是一种常见的做法,即命名的东西不是它们现在是什么,而是它们的创建者曾经希望它们是什么。我的反对意见是,我认为这不是数学矩阵实现的合理基础。你的稀疏性是用未定义的值来处理的,而不是数学上的零。(这可能并不重要。)但你的总体观点是正确的。如果它不是为了公众消费,也不会干扰你必须做出的其他决定,那么你怎么称呼它其实并不重要。