3

我需要编写一个函数来返回一个生成二维数组的函数。函数 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]]
4

1 回答 1

0

请试试这个,我想这就是你想要的。

您可以在以下链接上对此进行测试: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;
        }
于 2013-10-31T10:49:09.587 回答