1
resposta

[Dúvida] Como relacionar dois arrays com o for?

Nessa aula me veio uma dúvida, digamos que tenhamos um array bidimensional com 1000 alunos. Seria muito dispendioso fazer a média acessando os índices de um por um. Então como seria usando o laço for, para relacionar esses dois arrays (nomes e notas)?

1 resposta

Oi, tudo bem?

No desafio do vídeo, as médias estão guardadas em uma lista, e elas já estão calculadas para cada um dos alunos da outra lista. Você se refere a uma situação onde temos todas as notas de todos os alunos, e queremos calcular a média de cada um, correto?

Se for esse o caso, poderíamos ter o seguinte código:

const alunos = ["João", "Juliana", "Ana", "Caio"];
const notas = [
    [10, 8, 7.5, 9],
    [8, 8, 7, 7],
    [10, 10, 10, 10],
    [10, 9, 8, 7],
];

Neste código, a lista notas contém várias listas, uma guardando a nota de cada aluno. Por exemplo, a "Ana", que está na posição 2 da lista alunos, possui as notas da lista [10, 10, 10, 10], que está na posição 2 da lista de notas.

Se quisermos imprimir a média de cada aluno nesse cenário, podemos utilizar o seguinte código:

for (let i = 0; i < alunos.length; i++) {  // vamos percorrer o array de alunos
    const aluno = alunos[i];  // salvamos o aluno da vez na constante `aluno`
    const notasDoAluno = notas[i]; // o array de notas do aluno está guardado dentro do array `notas`. Ou seja, `notas[i]` é o array de notas do aluno da posição `i`

    let somaDasNotas = 0;

    for (let j = 0; j < notasDoAluno.length; j++) { // agora, vamos percorrer as notas desse aluno para calcular sua média. Criei a variável `j` para ficar diferente da variável `i`
        somaDasNotas+= notasDoAluno[j];
    }

    const mediaDoAluno = somaDasNotas / notasDoAluno.length;

    console.log(`O(a) aluno(a) ${aluno} tem média ${mediaDoAluno}.`);
}

Note que eu utilizei um bloco for dentro de outro para ser capaz de percorrer uma lista dentro de outra. Você pode ver mais sobre isso na atividade Loops em matrizes.

Qualquer dúvida só chamar!