鍍金池/ 問答/數據分析&挖掘  HTML/ 一個關于數組的問題

一個關于數組的問題

        function makeRow(v=0){
            const array = new Array(3);
            array.fill(v);
            return array;
        }

        function makeMatrix(v = 0){
            const array = new Array(3)
            array.fill(makeRow(v))

            return array;
        }

        const a = makeMatrix()
        a[0][1]=2
        console.log(a)
        /*
        [
          [0,2,0],
          [0,2,0],
          [0,2,0]
        ]
        */
        

如上代碼,為什么我只操作了 a的第0項,但結果是每項都被改變了
求大神解答

回答
編輯回答
失魂人

因為你只makeRow了一次,矩陣中的每一“行” 都引用了同一個數組,你改矩陣中的值就相當于改 “行” 中的一個

2017年12月5日 20:24
編輯回答
愚念

數組是引用類型。makeRow(v)返回的實際上是const array = new Array(3);這個array在內存中的地址,fill方法將這個地址取了三遍,所以無論改哪個,3個都會改變。

2018年5月29日 18:47