¿Por qué no puedo hacer una copia de esta matriz 2d en JS? ¿Cómo puedo hacer una copia?

Estoy implementando un juego de la vida de John Conway, pero tengo un problema extraño. Aquí hay una versión corta si el código me da 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]);
  }
}

En respuesta a este código, JavaScript imprimeat (0,0) false. Lo necesito para quedarmetrue&nbsp;hasta que comience la próxima generación.

Pensé hacerlet oldLifeMap = lifeMap.slice()&nbsp;lo arreglaría, pero no lo hace, y no estoy seguro de por qué. (¿No deberíaCopiar&nbsp;la matriz 2d y no crear una segunda referencia?)

De todos modos, qué está pasando aquí y cómo hago con éxito una copia real delifeMap&nbsp;¿aquí?