Por que não consigo fazer uma cópia dessa matriz 2D em JS? Como posso fazer uma cópia?

Estou implementando um jogo da vida de John Conway, mas estou tendo um problema estranho. Aqui está uma versão curta, se o código me causar problemas:

let lifeMap = [
  [true, false, false],
  [false, false, false],
  [false, false, false]
];
let oldLifeMap = lifeMap.slice();
for (let row = 0; row < lifeMap.length; row++) {
  for (let val = 0; val < lifeMap[row].length; val++) {
    let bool = lifeMap[row][val];
    let newBool = false; // here is where I would determine if cell is alive/dead
    lifeMap[row][val] = newBool;
    if (row === 0 && val === 0) console.log("at (0,0)", oldLifeMap[0][0]);
  }
}

Em resposta a este código, o JavaScript imprimeat (0,0) false. Preciso que fiquetrue até a próxima geração começar.

Eu pensei em fazerlet oldLifeMap = lifeMap.slice() consertaria, mas não, e não sei por que. (Não deveriacópia de a matriz 2D e não criar uma segunda referência a ela?)

De qualquer forma, o que está acontecendo aqui e como faço com êxito uma cópia real dolifeMap aqui?

questionAnswers(2)

yourAnswerToTheQuestion