js的二维数组问题!!!急

let dp = new Array(2).fill([1]);
for (let j = 0; j < 5; j++) {
	dp[0][j] = 1;
	}
console.log(dp);

输出结果是:

  1. 0: (5) [1, 1, 1, 1, 1]
  2. 1: (5) [1, 1, 1, 1, 1]
  3. 2: (5) [1, 1, 1, 1, 1]

有没有大神知道为啥不用遍历第一个下标呀?? 为啥dp[0][j]就能完成二维数组的建立??这个下标[0]不用变吗??

        let a=[1];
        let dp = new Array(2).fill(a);
        debugger;
        for (let j = 0; j < 5; j++) {
            dp[0][j] = 1;
            }
        console.log(a);
        console.log(dp);

你试试debug下这段代码他应该是涉及到了对象的引用.

这个数组dp里面是两个a对象,然后循环是给a里面赋值