3
respostas

[Dúvida] Qual a resposta pra essa questão?

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(idadesAmigos);

calculaIdadesDaqui5Anos(idadesAmigos);

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade Eu acertei de primeira a resposta porém quero solucionar o problema como é indicado pra gente fazer porém a solução que tento implementar aqui no p5 trava a pagina. Alguém sabe a solução?

3 respostas

Fala Renan, tudo bem?

Uma solução que você poderia utilizar é criar uma lista auxiliar dentro da própria função e para uso somente dela e copiar os valores da lista original acrescido por 1.

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

Note que, dessa forma, os valores da lista original (lista idades) não são alterados como anteriormente

// Código original
    idades[i] += 1;

e sim, usados para atribuir valor a outra lista (lista idadesMaisUm).

// Código modificado
    idadesMaisUm[i] = idades[i] + 1;

Espero ter ajudado e bons estudos!

Bacana Patrick. O exercício pede pra imprimir a próxima idade só da menina, a proxima idade da menina e dos amigos da menina e a idade deles daqui a 5 anos, porém só a primeira função retorna o valor correto. Você ou alguém aqui saberia me indicar o motivo do programa está imprimindo esses valores ao invés do correto como pede o exercício?

22 (5) [27, 26, 29, 24, 13] 0: 27 1: 26 2: 29 3: 24 4: 13 (5) [27, 26, 29, 24, 13] 0: 27 1: 26 2: 29 3: 24 4: 13

Bem, o programa que foi executado utiliza duas formas de passar a informação como parametro da função.

function    nomeDaFuncao (parametroDaFuncao) {}

quando é passado uma variável simples como parametro, o javascript passa uma cópia do valor para dentro da função. Os códigos são executados com essa cópia do valor, alterando o que é necessário mas mantendo o valor original da variável fora dela.


já quando o parametro é uma lista, a coisa funciona de um jeito diferente.

uma lista nada mais é do que um endereço na memória que aponta onde está guardado o primeiro valor da lista (o índice 0) e todos os outros valores ficam na sequência.

o parâmetro recebido pela função é na verdade o local na memória onde a variável está guardada. Sendo assim, quando se altera qualquer valor relacionado a esse parâmetro, você está alterando o valor guardado na memória e não uma cópia como no caso anterior.

É por isso que as funções a seguir imprimem o valor "errado" no console.

Se a dúvida persistir, volto aqui pra tentar expicar