1
resposta

[Dúvida] Esta correto meu entendimento?

Deixei comentado no código o meu entendimento para resolução da atividade 5.

//Exercicio 5
const departamentos = [
    {
        id: 1,
        nome: "Vendas",
        funcionarios: [
            { id: 101, nome: "Ana", cargo: "Vendedor" },
            { id: 102, nome: "Carlos", cargo: "Gerente de vendas" }
        ]
    },
    {
        id: 2,
        nome: "TI",
        funcionarios: [
            { id: 201, nome: "Maria", cargo: "Desenvolvedor" },
            { id: 202, nome: "João", cargo: "Analista de sistemas" }
        ]
    }
];

function encontrarFuncionarioPorId (valor){
    for ( departamento of departamentos){ //percorre todo array departamentos
        const encontrado = departamento.funcionarios.find((funcionario) => funcionario.id === valor ); //seleciona o funcionario atual dentro do departamento que esta sendo interado, para buscar o id desse funcionario e comprar com o valor passado no parametro.
        if (encontrado){ //se buscou algo será TRUE
            return encontrado; //passará o valor de departamento.funcionarios ao qual id seja igual a VALOR. E se encerra o loop do FOR
        };
    };
    return null; // caso o looping do FOr resulte em nada retornará o valor NULL;
};

//chamada para um funcionário existente na lista
let funcionarioEncontrado = encontrarFuncionarioPorId(201);
funcionarioEncontrado != null ? console.log("Funcionário encontrado (ID 201):", funcionarioEncontrado): console.log("\nFuncionário não encontrado:", funcionarioEncontrado);

//chamada para um funcionário que não existente na lista
funcionarioEncontrado = encontrarFuncionarioPorId(103);
funcionarioEncontrado != null ? console.log("Funcionário encontrado (ID 201):", funcionarioEncontrado): console.log("\nFuncionário não encontrado:", funcionarioEncontrado);
1 resposta

Oii Wilson, tudo bem?

O seu entendimento está bastante alinhado com o objetivo da atividade 5. Você criou uma função encontrarFuncionarioPorId que percorre um array de departamentos e, dentro de cada departamento, busca por um funcionário com o ID especificado. Se o funcionário é encontrado, a função retorna o objeto desse funcionário; caso contrário, retorna null após completar a busca em todos os departamentos.

A lógica que você implementou para percorrer os departamentos e utilizar o método .find() para buscar o funcionário dentro do array funcionarios de cada departamento está correta. O uso do if (encontrado) para verificar se um funcionário foi encontrado antes de retorná-lo também está adequado, garantindo que a função só retorne um funcionário quando realmente encontrar um correspondente ao ID fornecido.

Além disso, você testou a função com um ID existente e um inexistente, o que é uma boa prática para verificar se a função está lidando corretamente com ambos os cenários.

Parabéns! Continue praticando e explorando diferentes maneiras de resolver problemas com JavaScript.

Um abraço e bons estudos.