【发布时间】:2013-09-22 22:09:25
【问题描述】:
我需要编写一个函数来返回一个生成二维数组的函数。函数 mult(x,y) 应该返回一个生成乘法表的函数,调用 generate_matrix() 应该返回矩阵。
function mult(x,y){
function generate_matrix(){
var matrix = new Array(x);
for(var k = 0; k < x+1; k++){
matrix[k] = new Array(y);
}
for(var i = 0; i < x+1; i++){
for(var j = 0; j < y+1; j++){
matrix[i][j] = i*j;
}
}
return matrix;
}
return generate_matrix;
}
由于某种原因,矩阵比应有的大 100 倍。例如,如果我设置 var matrix = mult(5,5),然后调用 matrix(),我会得到一个大小为 50x50 的数组,而不是大小为 5x5 的数组。
我设置var m = mult(2,2),然后调用m(),应该得到如下二维数组:
[[0,0,0],[0,1,2],[0,2,4]]
【问题讨论】:
-
你的代码没有按照你说的做。
-
我运行它时运行良好...
-
给定的代码看起来是正确的。也许使用上下文中的某些东西导致了您描述的行为。
-
@Bergi 观察力好,这里首选
new Array(x+1);但是new Array(x)不会引起任何可观察到的问题,因为(除非我弄错了)像array[array.length] = value;这样的赋值在javascript 中是合法的。 -
@nh0815 如果它被解释为一个字符串,那是因为它是一个字符串。如果您从 DOM 中获取值(如输入字段值),它们是 always 字符串,您必须显式地将它们强制转换为整数。 JavaScript
+运算符偏向于字符串连接 (!)。
标签: javascript arrays matrix