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! 💪 🤔
Caso este post o tenha ajudado,
marque-o como solucionado ☑️.
Bons Estudos! 🤓