Oi pessoal, tudo bem?
Fiz duas possibilidades para o exercício 5. A menos que eu não esteja vendo alguma coisa importante, as duas chegaram na mesma conclusão, mas ambas estão um pouco diferente da resolução proposta pela professora. Na proposta, ela coloca um "for...of" para varrer o array de objetos raíz e depois ela aplica um método de array "find" para poder encontrar o valor que foi passado como argumento da função. No meu caso testei outras duas possibildiades:
Aqui eu usei um método filter pra poder "filtrar" os elementos do array com os objetos da raíz e depois apliquei um find somente nos objetos que estão dentro desse array e que contemplam as informações de matrícula que será usada no argumento da função para acessar a condição de existência daquele funcionário.
function encontrarFuncionarioPorId(idFuncionario){
let mensagemFunc = '*** FUNCIONÁRIO NÃO FOI ENCONTRADO ***';
listaFuncionarios.filter(listaCompletaFunc => {
listaCompletaFunc.nomeFuncionariosDepto.find(matriculasFuncObj => {
if (matriculasFuncObj.matriculafunc === idFuncionario){
const mensagemFuncEncontrado = (` *** FUNCIONÁRIO ENCONTRADO *** \n Nome: ${matriculasFuncObj.nomefunc}\n Cargo: ${matriculasFuncObj.cargo}\n Departamento: ${listaCompletaFunc.nomeDepto}`)
mensagemFunc = mensagemFuncEncontrado;
return mensagemFunc
}
})
} )
return mensagemFunc
}
** Possibilidade 2** - Usando dois "for... of" recursivamente.
Aqui ficou um pouco mais enxuto, usei dois for ... of. O primeiro para varrer os elementos do objeto raíz e o segundo para acessar somente os objetos que contenham o id que será usado como parâmetro da função e como validador da condição de existência do ID que está sendo procurando na condicional.
function encontrarFuncionarioPorId(idFuncionario){
let mensagemErro = "*** FUNCIONÁRIO NÃO FOI ENCONTRADO ***";
for (const infoFunc of listaFuncionarios){
for (const matFunc of infoFunc.nomeFuncionariosDepto){
if(matFunc.matriculafunc === idFuncionario){
mensagemSucesso = (`*** FUNCIONÁRIO ENCONTRADO ***\n Matrícula: ${matFunc.matriculafunc}\n Nome: ${matFunc.nomefunc}\n Departamento: ${infoFunc.nomeDepto}`)
mensagemErro = mensagemSucesso;
return mensagemErro;
}
}
}
return mensagemErro
}
Gostaria da avaliação dos deuses especialistas daqui pra saber se estou correto quanto a minha resolução e também se meu código está muito verboso a ponto de gerar muita ineficiência de processamento, visto que a resolução da professora está bastante enxuta.
Muuuiito Obrigado sempre!