Neste artigo você vai aprender a como copiar um array em JavaScript, e ainda não o copiaremos por referência, os dois arrays serão independentes
Fala programador(a), beleza? Bora aprender mais sobre JavaScript e arrays também!
Para copiar um array podemos utilizar o método slice, que em outras circunstâncias é utilizado para retirar elementos de um array
Porém neste caso vamos utilizá-lo sem parâmetros, então o array todo será retirado
E desta maneira conseguimos uma cópia independente, que não é de referência do array pai
Veja um exemplo prático da solução:
let a = ['a', 'b', 'c']; let b = a.slice(); console.log(b); // ['a', 'b', 'c']
Veja que criamos um array e atribuimos a variável a
Depois criamos a variável b com o resultado do método slice em a
Desta maneira há agora dois arrays independentes no nosso programa, podemos alterar um sem afetar o outro
O que é um problema quando nós atribuimos um array de uma variável a outra, isso cria uma referência
Fazendo com que a alteração em um, reflita na outra lista
Conclusão
Neste artigo você aprendeu a como copiar um array em JavaScript, sem criar referência
Utilizamos o método de arrays slice, que é utilizado normalmente para fatiar arrays
Porém sem argumentos, ele retorna o array completo e origina uma cópia do original, fazendo com que o nosso objetivo seja atingido
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
Eu sofri quando precisei copiar as informações de um array em outro, eu não sabia que eles ficavam linkados… E o que eu precisava era justamente que eles não tivessem essa característica. Não usei slice, fiz uma função para salvar um valor de cada vez. Obrigado pelo post, agora sei como resolver com apenas 1 linha de código. : )
show Diego, que bom que pude te ajudar =)
Opa Matheus, blz? Pra alguns casos acho que o slice pode ter outro comportamento, me corrija se eu estiver errado, mas por exemplo: let a = [1,2,3] let b = a.slice() b[0] = 10 console.log(a) [ 1, 2, 3 ] console.log(b) [ 10, 2, 3 ] No caso acima, o slice funcionaria bem.. Porém no caso abaixo: let array1 = [ [ [10], [20], [30] ], [ [40], [50], [60] ] ]; defino um array pai, com 2 filhos e 3 netos let array2 = array1.slice() uso o slice para copiá-lo array2[0][0] = “mudou”; altero o primeiro índice do pai,… Leia mais »