Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que o novo elemento é 11?

Eu nao entendi porque o novo item inserido na array foi 11. Seria porque nota+1 fez pegar o ultimo item e somou 1? Se foi isso, por que fazer dessa forma ao invés de inserir uma nova nota diretamente ou até mesmo um novo numero gerado aleatoriamente?

1 resposta
solução!

Bom, o objetivo dessa aula era que o aluno teria ganho 1 ponto a mais na média, então não poderíamos gerar um número aleatório ou inserir um novo valor para cada nota que ele obteve, seria um trabalho muito maior e que pode ser substituído pelo método map().

O valor 10 ficou 11 porque no primeiro código feito foi declarado apenas para adicionar +1 a cada elemento do array:

const notas = [10, 9, 8, 7, 6]

const notasAtualizadas = notas.map(nota => nota +1) // nota + 1 adiciona 1 número a mais em cada elemento do array. 

console.log(notasAtualizadas) // Resultado [11, 10 , 9 , 8 , 7]

Nesse caso está se somando o valor 1 a todos os valores dentro do Array notas, porém, pensando em um contexto onde o nosso limite de média é 10, não podemos permitir que ele some valores que já contém o número 10 como padrão:

const notas = [10, 9, 8, 7, 6]

const notasAtualizadas = notas.map(nota => nota == 10 ? nota : ++nota) 

console.log(notasAtualizadas) // Resultado [ 10, 10, 9, 8, 7 ]

Agora temos delimitado pelo nosso if ternário que quando o valor da nota for igual a 10 ele não soma nenhum valor, porém se o valor for menor que 10 ele adiciona mais um valor dentro dele.

Caso queria testar o código usando um if 'normal' fica assim o código:

const notas = [10, 9, 8, 7, 6]

const notasAtualizadas = notas.map(nota => {
    if(nota == 10){
        return nota
    }else{
        return ++nota
    }
})

console.log(notasAtualizadas);