1
resposta

[Dúvida] EX 5

Bom dia! Não sei oq está errado no meu código. Pode me ajudar?

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(id){
    return departamentos.funcionarios.find((funcionario) => departamentos.funcionarios.id === id)
}
const funcc = encontrarFuncionarioPorId(202)
console.log(funcc);
1 resposta

Oi Flavio,

Analisando seu código, o problema está na forma como você está acessando os funcionários dentro da função encontrarFuncionarioPorId.

O método find deve ser aplicado diretamente na lista de funcionários, e não em departamentos.funcionarios, que não existe. Além disso, a comparação dentro do find também está incorreta, pois você está tentando comparar departamentos.funcionarios.id com o id passado como argumento, quando deveria comparar o id do funcionário atual (funcionario.id) com o id passado.

Para corrigir, você precisa iterar sobre cada departamento e, dentro de cada um, procurar o funcionário com o id desejado. Veja o código corrigido:

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(id) {
    for (const departamento of departamentos) {
        const funcionarioEncontrado = departamento.funcionarios.find(funcionario => funcionario.id === id);
        if (funcionarioEncontrado) {
            return funcionarioEncontrado;
        }
    }
    return undefined;
}

const funcc = encontrarFuncionarioPorId(202);
console.log(funcc);

Neste código corrigido, iteramos sobre cada departamento e usamos o método find para procurar o funcionário com o id correspondente. Se encontrado, retornamos o funcionário; caso contrário, retornamos undefined. 👍

Para saber mais: Array.prototype.find()

Continue praticando e explorando as funcionalidades do JavaScript! 💪 🤔

tux matrix Caso este post o tenha ajudado, marque-o como solucionado ☑️. Bons Estudos! 🤓