我需要编写一个函数,该函数返回一个生成二维数组的函数。函数 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]]
最佳答案
请试试这个,我想这就是你想要的。
您可以在以下链接上进行测试:http://jsfiddle.net/BhaveshKachhadiya/Wt5gQ/33/
function mult(x, y) {
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++) {
document.getElementById('output').innerHTML = document.getElementById('output').innerHTML + "[";
for (var j = 0; j < y + 1; j++) {
matrix[i][j] = i * j;
document.getElementById('output').innerHTML = document.getElementById('output').innerHTML + matrix[i][j] + ",";
}
document.getElementById('output').innerHTML = document.getElementById('output').innerHTML + "]" + "<br/>"
}
alert(matrix);
return matrix;
}
关于JavaScript 矩阵边界不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949271/