1
resposta

Solução para passar um array como parâmetro de uma função sem alterar os valores

Para resolver esse problema, é necessário duplicar o Array, mas não por meio de uma simples atribuição como var array2 = array1; , pois desta forma estaremos copiando apenas o endereço na memória do array1. A forma correta de copiar esse array, seria acessando cada valor do array e copiando ele para outro array, ou utilizando funções prontas como a função Array.from() que já realiza esse trabalho. Desta forma, segue a solução que eu implementei.

function calculaProximaIdade(idade) {
        idade += 1;
        console.log(idade);
    }

    function calculaProximasIdades(idades) {
        for (let i = 0; i < idades.length; i += 1) {
            idades[i] += 1;
        }

        console.log(idades);
    }

    function calculaIdadesDaqui5Anos(idades) {
        for (let i = 0; i < idades.length; i += 1) {
            idades[i] += 5;
        }

        console.log(idades);
    }

    const idadeStefany = 21;
    calculaProximaIdade(idadeStefany);

    const idadesAmigos = [idadeStefany, 20, 23, 18, 7];
    calculaProximasIdades(Array.from(idadesAmigos));

    calculaIdadesDaqui5Anos(Array.from(idadesAmigos));

    console.log("# " + idadesAmigos);

Também seria possível criar a cópia do array dentro das respectivas funções, mas um array não precisa necessariamente estar armazenado dentro de uma variável, o array pode ser passado como parâmetro dentro de uma função da seguinte forma:

funcao([0, 1, 2, 3] Dessa forma, achei mais coerente copiar o array e passa-lo como parâmetro do que copiar o array dentro da função.

1 resposta

Oi Abraão, tudo bem?

Desculpe a demora em responder!

Obrigado por compartilhar sua solução para o código da Stefany com nossa comunidade do fórum Alura. Tenho certeza que ela irá contribuir com outros alunos e alunas que estão estudando esse assunto e buscam uma forma de resolver esse problema.

Continue se empenhando cada vez mais para aprimorar suas habilidades e desenvolver seus conhecimentos e caso tenha dúvidas, conte com o fórum da Alura.

Grande abraço!