Como criar uma cópia de um array em JavaScript, e não uma referência a ele?
Olá a todos! Sou novo em JavaScript e me deparei com um problema que não consigo resolver. Quando tento copiar um array, as alterações no novo array afetam o original. Aqui está um exemplo:
```javascript
let original = [1, 2, 3];
let copy = original;
copy.push(4);
console.log(original); // [1, 2, 3, 4] — eu não quero que original mude!
```
Eu entendo que `copy = original` cria não uma cópia, mas uma referência ao mesmo array. Mas como fazer para que `copy` seja completamente independente? Tentei `copy = original.slice()`, e funcionou para números simples. Mas quando tenho arrays aninhados ou objetos, as alterações ainda afetam o original:
```javascript
let nested = [[1, 2], [3, 4]];
let copyNested = nested.slice();
copyNested[0].push(5);
console.log(nested[0]); // [1, 2, 5] — mudou de novo!
```
Qual é o problema? Como fazer uma "deep copy" para que quaisquer alterações na cópia não afetem o original? De preferência com exemplos para diferentes casos: arrays simples, arrays de objetos, etc.