2
respostas

Parâmetros da função

Desculpem a minha ignorância! Mas a função não deveria receber dois parâmetros, sendo eles, a lista de usuários e o id?

Extrutura da função exibida no exercício?

function encontrarUsuarioPorId ( id ) {
  
}

Na minha cabeça, rs:

function encontrarUsuarioPorId ( listaDeUsuarios , id ) {
  
}

Outro detalhe:

Olhando para todas as soluções, com exceção da letra C, onde o método usado é o filter( ), que por sua vez vez retorna UM ARRAY COM TODAS AS OCORRÊNCIAS (e o exercício pede para retornar algo único (id),, tenho a sensação que os demais atendem o enunciado da questão.

A diferença talvez esteja no tipo de retorno dessa infinidade de métodos possíveis, certo? Pois alguns retornam um novo array enquanto o exercício pede para retornar apenas um usuário em específico, seria isso?

2 respostas

Observando a minha pergunta eu cheguei a conclusão que eu estou equivocado no que diz respeito a passar "listaDeUsuarios" como parâmetro para função. É que num primeiro momento eu achei que a listaDeUsuarios fosse um JSON, mas ao que parece é um array já definido no código e, por isso, não se faz necessário passá-lo como parâmetro para a função "encontrarUsuarioPorId".

Estou correto na minha interpretação, gente?

Perfeita sua reflexão, Rosemberg! Sim, sua interpretação está correta.

Se a lista de usuários está definida no escopo externo da função, realmente não é necessário passar ela como parâmetro. A função acessa diretamente essa variável, que já está disponível no contexto onde ela foi criada.

Por exemplo:

const usuarios = [
  { id: 1, nome: 'Ana' },
  { id: 2, nome: 'Carlos' },
  { id: 3, nome: 'Beatriz' }
];

function encontrarUsuarioPorId(id) {
  return usuarios.find(usuario => usuario.id === id);
}

console.log(encontrarUsuarioPorId(2)); 
// Saída: { id: 2, nome: 'Carlos' }

Aqui, a função só recebe o id, porque usuarios já está acessível no escopo.

Agora, se a lista não estivesse no escopo global, ou se você quisesse tornar a função mais flexível (para receber qualquer lista), aí sim faria sentido passar a lista como parâmetro:

function encontrarUsuarioPorId(lista, id) {
  return lista.find(usuario => usuario.id === id);
}

const resultado = encontrarUsuarioPorId(usuarios, 2);
console.log(resultado);
// Saída: { id: 2, nome: 'Carlos' }