根据给定的m行n列的二维数组grid,定义一个m行n列的二维数组a。
写法1:
m=grid.length;
n=grid[0].length;
var a=new Array();
for(var i=0;i<m;i++) {
    a[i]=new Array();
    for(var j=0;j<n;j++){
        a[i][j];
    } 
}写法2:
m=grid.length;
n=grid[0].length;
var a=new Array();
for(var i in m) {
    a[i]=new Array();
    for(var j in n){
        a[i][j];
    } 
}假设m,n都是3,写法1的结果a=[[],[],[]],写法2则是a=[]
为什么会出现这个问题啊,写法2的问题在哪里

解决方案 »

  1.   

    for in 用来遍历对象的属性,m是个数值,没有属性,所以实际for in没有执行。
      

  2.   

    你的代码我复制下来加了点东西运行了一下,你第二个方法没有出来结果是因为,你第一层for循环(for(var i in m) ),这里写的有问题,
    这个   for(var a in b) ,这种写法,你可以理解为 以a为键,在b中循环遍历,a就类似于a=0;a<3;a++一样。            window.onload=function(){
    test1();
    test2();
    };
    var grid = [[1,2,3],[4,5,6],[7,8,9]];
    //方法一
    function test1() {
    m = grid.length;
    n = grid[0].length;
    var a = new Array();
    for(var i = 0; i < m; i++) {
    a[i] = new Array();
    for(var j = 0; j < n; j++) {
    a[i][j];
    }
    }
    console.log("测试方法一");
    console.log(a);
    }
    //方法二
    function test2() {
    m = grid.length;
    n = grid[0].length;
    var a = new Array();
    for(var i in grid) {
    a[i] = new Array();
    for(var j in n) {
    a[i][j];
    }
    }
    console.log("测试方法二");
    console.log(a);
    }
    你写的从那个,是遍历一个数组的长度,那个长度就就是个数字,而这个方法是用来遍历数组的,你那样写实际上他的两层循环一次都没有执行,而你的到的数组只是你实例化的时候生成的空数组而已。
      

  3.   

    额(⊙o⊙)…,不好意思,刚才发的代码有点问题,第二个还是不行这回可以了,
    先看效果我弄完的效果
    然后贴代码
    [img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif]window.onload=function(){
    test1();
    test2();
    };
    var grid = [[1,2,3],[4,5,6],[7,8,9]];
    //方法一
    function test1() {
    console.log("测试方法一");
    m = grid.length;
    n = grid[0].length;
    var a = new Array();
    for(var i = 0; i < m; i++) {
    a[i] = new Array();
    for(var j = 0; j < n; j++) {
    a[i][j] = (i+1)*(1+j);

    }
    console.log(a[i]);
    }

    }
    //方法二
    function test2() {
    console.log("测试方法二");
    m = grid.length;
    n = grid[0].length;
    var a = new Array();
    for(var i in grid) {
    a[i] = new Array();
    for(var j in grid[i]) {
    a[i][j] = (i)*(j);
    }
    console.log(grid[i]);
    }
    console.log(a)
    }
      

  4.   

    Javascript 基础 之 数组http://www.verejava.com/?id=17234523859729