2
respostas

[Dúvida] Desafio 10

Boa tarde, a respeito do desafio 10 tomei como desafio criar outras formas de fazer a verificação de conteúdo.

Uma seguindo o exemplo dado em Opinião do Instrutor, outros 2 com valores pré-definidos e uma quarta forma onde a busca seria realizada por um terceiro.

Seguindo a Proposta padrão meu código é o seguinte;

function school (obj) {
    const studant = [
        {id: 1, nome: 'Joaquin', curso: 'Geografia'},
        {id: 2, nome: 'Maria', curso: 'Quimica'},
        {id: 3, nome: 'Tiago', curso: 'Biologia'},
        {id: 4, nome: 'Duda', curso: 'Biologia'},
        {id: 5, nome: 'Caio', curso: 'Geografia'},
        {id: 6, nome: 'Harry', curso: 'Quimica'},
        {id: 7, nome: 'Renata', curso: 'Astrofisica'},
    ]

    if(obj){
        console.log('O aluno se encontra na lista')
    }else {
        console.log('O aluno não se encontra nessa lista.');
    }
  
}

const objeto ={id: 5, nome: 'Caio', curso: 'Geografia'}; 
school(objeto);

O resultado é "O Aluno se encontra na lista";

As outras duas formas padronizadas são através do Id e do Curso já definidos;

/// codigo ocultado ( A Function mencionada anteriormente, as linhas posteriores se encontram dentro da mesma)

 let result = studant.filter(studant => studant.id === 7)
    console.log(result);
    let varredura = studant.filter(studant => studant.curso === 'Biologia')
    console.log(varredura);
    

O resultado obtido é : 1º Teste [ { id: 7, nome: 'Renata', curso: 'Astrofisica' } ]

2º Teste[ { id: 3, nome: 'Tiago', curso: 'Biologia' }, { id: 4, nome: 'Duda', curso: 'Biologia' } ]

Agora no entando decidir testar com um valor inserido através do prompt da seguinte forma;

/// codigo ocultado ( A Function mencionada anteriormente, as linhas posteriores se encontram dentro da mesma)

let test = prompt('Defina a o Curso que você deseja verificar');

    if (test) {
        test = studant.filter(studant => studant.curso === test);
        console.log('A materia se encontra registrada');
        
        
    }else {
        console.log('A materia não se encontra registrada');
        
    }

O resultado é : "A Matéria se encontra registrada"

Funciona perfeitamente, contudo meu intuito e fazer com que o código retorne o elemento correspondente dentro da array.

A premissa inicial é que retorne da seguinte forma( Usando Quimica como exemplo):

"A Matéria se encontra registrada, os alunos registrados são : Maria e Harry" ou

"A Matéria se encontra registrada, os alunos registrados são:" [ { id: 2, nome: 'Maria', curso: 'Quimica'} { id: 6, nome: 'Harry', curso: 'Quimica' } ]

Sei que posso por o codigo da seguinte forma A Matéria ${test} se encontra registrada, os alunos registrados são :

Mas não consigo pensar em formas de obter o nome dos alunos registrados, agradeço de antemão qualquer sugestão ou ajuda.

Um forte abraço e bons estudos.

2 respostas

A Seguir o Código Completo:

function school (obj) {
    const studant = [
        {id: 1, nome: 'Joaquin', curso: 'Geografia'},
        {id: 2, nome: 'Maria', curso: 'Quimica'},
        {id: 3, nome: 'Tiago', curso: 'Biologia'},
        {id: 4, nome: 'Duda', curso: 'Biologia'},
        {id: 5, nome: 'Caio', curso: 'Geografia'},
        {id: 6, nome: 'Harry', curso: 'Quimica'},
        {id: 7, nome: 'Renata', curso: 'Astrofisica'},
    ]
    let test = prompt('Defina a o Curso que você deseja verificar');

    if (test) {
        test = studant.filter(studant => studant.curso === test);
        console.log('A materia se encontra registada');
        
        
    }else {
        console.log('A materia não se encontra registada');
        
    }
    
  
    let result = studant.filter(studant => studant.id === 7)
    console.log(result);
    let varredura = studant.filter(studant => studant.curso === 'Biologia')
    console.log(varredura);

    if(obj){
        console.log('O aluno se encontra na lista')
    }else {
        console.log('O aluno não se encontra nessa lista.');
    }
  
}

const objeto ={id: 5, nome: 'Caio', curso: 'Geografia'}; 
school(objeto);

Olá Kawã! Tudo bem?

Para alcançar o resultado desejado no seu código, onde você quer exibir não apenas a confirmação de que a matéria está registrada, mas também listar os nomes dos alunos inscritos nessa matéria, você pode utilizar o método map para extrair os nomes dos alunos do array de objetos filtrados. Aqui está uma sugestão de como você pode modificar seu código para incluir essa funcionalidade:

let test = prompt('Defina o Curso que você deseja verificar');

if (test) {
    let filteredStudents = studant.filter(studant => studant.curso === test);
    if (filteredStudents.length > 0) {
        let studentNames = filteredStudents.map(studant => studant.nome).join(' e ');
        console.log(`A matéria ${test} se encontra registrada, os alunos registrados são: ${studentNames}`);
    } else {
        console.log(`A matéria ${test} não se encontra registrada`);
    }
} else {
    console.log('Nenhum curso foi definido');
}

Neste código, após filtrar os estudantes que estão matriculados no curso especificado, utilizamos o método map para criar um novo array que contém apenas os nomes desses estudantes. Depois, usamos o método join para transformar esse array de nomes em uma string, separando os nomes por ' e '. Isso permitirá que a saída seja mais legível e amigável.

Espero que essa sugestão ajude a melhorar seu código conforme você desejava.

E boa sorte nos estudos!