提问者:小点点

Javascript复制数组。 更改会影响两个数组


我试图复制一个2D数组,但是每次我改变复制数组的值时,它也会改变原始数组的值。

原始数组

 board = [
        [0,1,0],
        [0,0,1],
        [1,1,1],
        [0,0,0]
      ];
let ans = board.slice();
    
    for(let i=0; i<board.length; i++){
        for(let j=0; j<board[i].length; j++){
            let neighbors = checkCell(board, i, j);
            if(board[i][j] === 1) {
                ans[i][j] = (neighbors === 2 || neighbors === 3 ? 1 : 0);
            } else {
                ans[i][j] = (neighbors === 3 ? 1 : 0);
            }
        }
    }

checkCell()只是一个返回1或0的方法。 我的问题是,当我将一个值设置为ans时,它还会更改原始的board数组。 我尝试使用和=[...board];进行复制,也遇到了同样的问题。


共1个答案

匿名用户

当您通过.slice[...]进行复制时,它将执行浅层复制,这意味着复制了外部数组,但没有复制内部数组。 您可以单独复制每个元素:

let ans = board.map(v => v.slice()); // copies every 1d array