js一行代码创建二维数组

原文地址:https://blog.csdn.net/asd0356/article/details/113403202

文章目录
前言
正文
结语
前言
使用js创建二维数组的方式有很多,最经典的莫过于使用for循环创建,相信大家都会此方法。下面我使用js原生API一行代码创建二维数组。

正文
Talk is cheap,show you my code:

const arr1 = Array(3).fill(0).map(x => Array(3).fill(0));
1
此代码应该也很好理解,初始化一个行列都为3且数值都为0的二维数组。
看完代码肯定会有人有疑问,此创建方式总感觉有些复杂,为何不用下面更简单的方式来创建:

const arr1 = Array(3).fill(Array(3).fill(0));
1
在控制台输出结果:

感觉确实也都是二维数组,那第二种方式岂不更简便?
但是事实真的是这样吗,真相只有一个,一行代码辨真假:

arr1[0][0] = 1;
arr2[0][0] = 1;
1
2
此时我们再打印出结果:

惊奇的发现方式二所创建的数组“牵一发而动全身”,感觉就是一个假的二维数组!
为什么会产生这种现象?问题十有八九就出在fill此API上,查看官方文档:

果不其然,害,果真是牵一发而动全身。

结语
想简便很好,但也要能满足需求,所以,既然API不满足功能需要那么我们只能退而求其次使用第一种方式创建二维数组。(或者,我们自己造一个可以满足需要的fill函数,然后。。。)
————————————————
版权声明:本文为CSDN博主「奇喑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/asd0356/article/details/113403202

posted on 2022-02-10 14:22  ZhYQ_note  阅读(437)  评论(0编辑  收藏  举报

导航