-8

最近突然遇见一个及其离奇的事情,在对一个二维 Array 赋值的时候发现会给整个列赋值,这是为什么啊?有没有人遇到过,怎么解决这个问题啊?

var arrs = Array(3).fill(Array(3).fill(null));
arrs[1][2] = 1;
console.log(arrs);

浏览器输出:

clipboard.png

这个问题已被隐藏,原因:问题已解决

devilshow 333
2017-08-01 提问

查看全部 6 个回答

2

字丑了点,逻辑应该没问题0-0
clipboard.png

推荐答案

2

已采纳
var arrs = Array(3).fill(Array(3).fill(null));
arrs[1][2] = 1;
console.log(arrs);

相当于:

var arr = Array(3).fill(null);
var arrs = Array(3).fill(arr);
arrs[1][2] = 1;
console.log(arrs);

arr是引用类型,arrs中的三个元素其实都是指向的arr。

推广链接