验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

JavaScript怎么生成二维数组

阅读:980 来源:乙速云 作者:代码code

JavaScript怎么生成二维数组

      JavaScript生成二维数组

      方法一 

      new Array(x).fill(new Array(y).fill(0))

      但注意,当一个对象被传递给fill方法时,填充数组的是这个对象的引用。

      即二维数组的第一个维度中的每一个数组都指向同一个引用,如果向第一个维度中的任一元素执行push,则每一个二维中都会多一个元素。

      方法二

      new Array(x).fill().map(() => new Array(y).fill(0))

      方法三

      Array.from(new Array(x), () => new Array(y).fill(0))

      测试代码:

          const arr1 = new Array(2).fill(new Array(3).fill(0))
          // arr1: [ [ 0, 0, 0 ], [ 0, 0, 0 ] ]
          arr1[0].push(9)
          // arr1: [ [ 0, 0, 0, 9 ], [ 0, 0, 0, 9 ] ] 
      
          const arr2 = new Array(2).fill().map(() => new Array(3).fill(0))
          // arr2: [ [ 0, 0, 0 ], [ 0, 0, 0 ] ]
          arr2[0].push(9)
          // arr2: [ [ 0, 0, 0, 9 ], [ 0, 0, 0 ] ] 
      
          const arr3 = Array.from(new Array(2), () => new Array(3).fill(0))
          // arr3: [ [ 0, 0, 0 ], [ 0, 0, 0 ] ]
          arr3[0].push(9)
          // arr3: [ [ 0, 0, 0, 9 ], [ 0, 0, 0 ] ]

      JS中创建二维数组的坑

      JS中二维数组的创建

      首先JavaScript只支持 一维数组 ,但我们可以通过一些方法实现矩阵以及多维数组

      其中普通的创建方法并不会出现什么问题:

      (1) 利用一维数组嵌套一维数组的方式创建二维数组:

      let arr = [] ;
      a[0] = [1,2,3,4,5,6];
      a[1] = [10,20,30,40,50,60]

      然后使用一个 双层for循环 就可以迭代这个二维数组中的元素

      所以用这种方法创建多维数组,不管有几个维度,都可以通过嵌套循环来遍历

      遇到问题的方法:

        let arr1= new Array(10).fill(new Array(10).fill(0))

      控制台打印arr1

      JavaScript怎么生成二维数组

      这时候,若你想设置,arr[0][0] = 1,你会发现二维数组所有子数组的第一项都被改为1

      JavaScript怎么生成二维数组

      原因

      JavaScript怎么生成二维数组

      综上,还是选择老实一点的创建方法:

      var a = new Array();
      
      for(var i=0;i<5;i++){        //一维长度为5
      
          a[i] = new Array();
      
          for(var j=0;j<5;j++){    //二维长度为5
      
          	a[i][j] = 0;
         }
      
      }
    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>