方法一:
new Array(n).fill(new Array(n).fill(1));
當一個對象被傳遞給
fill
方法的時候, 填充數組的是這個對象的引用
所以一維中的每一個數組,都指向同一個引用
如果一維中的任何一個元素執行push,哪個每一個二維中都會多一個元素
所以為了避免這種情況可以
new Array(n).fill().map(()=>{return new Array(n).fill(false)})
方法二:
Array.from(new Array(3),()=>{return new Array(3).fill(false)})
fill 方法故意被設計成通用方法, 該方法不要求 this 是數組對象。 fill 方法是個可變方法, 它會改變調用它的 this 對象本身, 然后返回它, 而並不是返回一個副本。 當一個對象被傳遞給 fill方法的時候, 填充數組的是這個對象的引用。
來源:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/fill