未定义嵌套循环(JavaScript)

时间:2019-07-02 12:54:43

标签: javascript arrays multidimensional-array nested-loops matrix-multiplication

我得到的矩阵似乎不确定。在第25行,这是我的Chrome控制台发出的错误:“无法设置未定义的属性“ 0”。”

在研究类似问题时,我见过的大多数矩阵乘法解决方案都使用3个嵌套循环,而不是4个。这可能是更好的方法,但四个循环对我来说才是唯一的方法,因为迭代是在两个单独的行和两个单独的列上进行的。如果这是导致我的错误的原因,请有人解释为什么?

const A = [ [-4,0,5], [-3,-1,2], [6,7,-2], [1, 1, 2]],B = [ [1, 0, 3, 0], [4,5,-1, 2], [2, 4, 3, 1]],C = [];
for (var i = 0; i < A.length; i++) {
	//C[i] = 0;
	for (var j = 0; j < A[j].length; j++) {
		//console.log(A[i][j]);
		for (var y = 0; y < B[0].length; y++) {
			C[i][y] = 0;
			for (var x = 0; x < B.length; x++) {
				//console.log(B[x][y]+ "["+x+","+y+"]");
				console.log(C[i][y] + "[" + i + "," + y);
				C[i][y] += A[i][j] * B[x][y];
			}
			console.log(C[i][y] + "[" + i + "," + y + "] is the resultant matrix");
		}
	}
}        

2 个答案:

答案 0 :(得分:1)

//C[i] = 0;更改为C[i] = [];。您需要在C[i]下初始化数组,以便稍后C[i][y] = 0;

进行访问

const A = [ [-4,0,5], [-3,-1,2], [6,7,-2], [1, 1, 2]],B = [ [1, 0, 3, 0], [4,5,-1, 2], [2, 4, 3, 1]],C = [];
for (var i = 0; i < A.length; i++) {
	C[i] = [];
	for (var j = 0; j < A[j].length; j++) {

		for (var y = 0; y < B[0].length; y++) {
			C[i][y] = 0;
			for (var x = 0; x < B.length; x++) {
				C[i][y] += A[i][j] * B[x][y];
			}
		}
	}
}
console.log(C);

答案 1 :(得分:0)

const A = [ [-4,0,5], [-3,-1,2], [6,7,-2], [1, 1, 2]],B = [ [1, 0, 3, 0], [4,5,-1, 2], [2, 4, 3, 1]],C = [];
for (var i = 0; i < A.length; i++) {
	C[i] = [];
	for (var j = 0; j < A[j].length; j++) {

		for (var y = 0; y < B[0].length; y++) {
			C[i][y] = 0;
			for (var x = 0; x < B.length; x++) {
				C[i][y] += A[i][j] * B[x][y];
			}
		}
	}
}
console.log(C);

相关问题