S-N-O-R-L-A-X

js 二维数组初始化

js的二维数组初始化比C++要麻烦一些。

方法一:

function f(){
    for(let i=0;i<m;i++){
       arr[i]=[];
       for(let j=0;j<n;j++){
         arr[i][j]=0;
       }
    }
 }

方法二:使用map

function f(){
      let arr=new Array(3).fill(0).map(()=>new Array(4).fill(1));
  }

方法三
代码略简单,但有问题,见下文

function f(){
      let arr=new Array(3).fill(new Array(4).fill(1));
  }

比较:

function f(){
      let arr1=new Array(3).fill(new Array(4).fill(1)),arr2=new Array(3).fill(0).map(()=>new Array(4).fill(1));
      arr1[0][1]=3;
      arr2[0][1]=3;
      console.log(arr1);
      console.log(arr2);
  }

如果采用直接fill的形式,如arr1,在初始化的时候会和arr2有相同效果,但在之后对值修改时,会将同一列的所有值一起改掉。猜测它可能是存储了三个相同地址,因此改了以后全都改了。
因此要初始化js的二维数组,还是要采用map的形式。

发表于 2021-11-03 10:42  $SNORLAX$  阅读(25)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章: