1
resposta

Sujestão de Resolução

Parti do princípio de que os itens da lista na terceira função deveria ser informado com número e não como índice da lista informada na constante. Tive que recorrer às informações em outras postagens para solucionar a questão. Acredito ser a solução mais apropriada, interferindo menos no código original


const idadeStefany = 21;
const idadesAmigos = [idadeStefany, 20, 23, 18, 7];
const idadesAmigosDaqui5Anos = [idadeStefany, 20, 23, 18, 7];

calculaProximaIdade(idadeStefany);
calculaProximasIdades(idadesAmigos);
calculaIdadeDaqui5Anos(idadesAmigos)

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

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

function calculaIdadeDaqui5Anos(idades) {
    const copiaIdades = [...idades];
    for (let i = 0; i < copiaIdades.length; i += 1) {
        copiaIdades[i] += 5;
    }
    console.log(copiaIdades);
}
1 resposta

Boa solução!

A chave é mesmo criarmos uma cópia da lista original, assim criamos uma nova refência na memória e ao alterar os valores a lista original se mantém sempre inalterada.

Apliquei esta mesma estratégia, mas de outra forma:

function calculaProximaIdade(idade) {

    idade += 1;
    console.log(idade);
}

function calculaProximasIdades(a, b, c, d, e) {

    const idades = [a, b, c, d, e];

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

function calculaIdadesDaqui5Anos(a, b, c, d, e) {

    const idades = [a, b, c, d, e];

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