Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Atribuir o valor de uma variável a outra [JAVASCRIPT]

Olá, pessoal! Tudo bom?

Estou com uma dúvida que já ouvi falar sobre, mas não consegui pesquisar a respeito pra encontrar uma solução. Estou fazendo um projeto e nele estou fazendo uso de duas variáveis do tipo Array, numberOne e numberTwo, e irei fazer uso inicialmente de numberOne, adicionando valores dentro do array. Mas em determinado momento, quero que o valor desse array de numberOne passe para numberTwo e que numberOne possa ser zerado. O problema está sendo que, ao fazer isso, o valor de numberTwo também está sendo zerado.

Segue o código pra que vocês possam dar uma olhada, também vou deixar o repositório do projeto caso facilite para entender também, mas basicamente eu estou inserindo valores no array numberOne, unindo os valores desse array e atribuindo ao array numberTwo, e depois zerando o numberOne, da onde está vindo o problema:

numberOne.push(numbers[i].innerHTML);
numberTwo = numberOne.join().replaceAll(',', '');
numberOne = [];
console.log(numberTwo)
console.log(numberOne)

Repositório: https://github.com/Iurygon/Calculator

Espero que tenha sido claro na minha dúvida e se precisarem de mais alguma informação, podem entrar em contato.

Desde já, agradeço bastante e um forte abraço!

2 respostas
solução!

Olá, Iury! Tudo joia?

O que está acontecendo é que, quando você faz numberTwo = numberOne, você não está criando uma nova cópia de numberOne, mas sim fazendo numberTwo apontar para o mesmo local na memória que numberOne está apontando. Então, quando você muda numberOne, numberTwo também muda.

Uma solução para isso é usar o método slice(), que retorna uma cópia do array. Aqui está um exemplo de como você pode fazer isso:

numberOne.push(numbers[i].innerHTML);
numberTwo = numberOne.slice().join().replaceAll(',', '');
numberOne = [];
console.log(numberTwo)
console.log(numberOne)

Neste código, numberOne.slice() cria uma nova cópia de numberOne, então quando você esvazia numberOne, numberTwo não é afetado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Show demais, Armano, muito obrigado pela resposta! Eu já até conhecia o método slice, mas nem de longe que fazer uso dele assim passou pela minha cabeça hahaha.

Muitíssimo obrigado!