Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

170
Visualizações
Cómo usar el método de búsqueda para buscar un objeto en una función

Estoy atascado para encontrar al usuario por id usando la función de búsqueda. Mi función getUsers() devuelve una matriz de objetos.

 function getUsers(filter, limit, offset) { let userList = []; for (let i = 0; i < 100; i++) { let user = {}; user.id = i; user.firstname = 'firstname_' + i; user.lastname = 'lastname' + i; user.email = user.userId + "@hotmail.com"; userList.push(user); } return JSON.stringify(userList); }

y quiero encontrar un usuario por su id aquí pero muestra Datos no encontrados:

 app.get('/shops/:shopid/users/:userId', (req, res) => { let users = getUsers(undefined, undefined, undefined); const result = users.find(u => u.id === parseInt(req.params.userId)); if(!result) res.status(404).send('Data not found'); res.send(result); });
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Porque getUsers devuelve una cadena JSON en lugar de una matriz. El método de find solo funciona en matrices. Así que tienes algunas opciones.

Opción 1: simplemente devuelva la matriz en la función getUSers

 function getUsers(filter, limit, offset) { let userList = []; for (let i = 0; i < 100; i++) { let user = {}; user.id = i; user.firstname = 'firstname_' + i; user.lastname = 'lastname' + i; user.email = user.userId + "@hotmail.com"; userList.push(user); } return userList; }

Opción 2: use JSON.parse cuando llame a getUsers

 app.get('/shops/:shopid/users/:userId', (req, res) => { let users = JSON.parse(getUsers(undefined, undefined, undefined)); const result = users.find(u => u.id === parseInt(req.params.userId)); if(!result) res.status(404).send('Data not found'); res.send(result); });
about 4 years ago · Juan Pablo Isaza Relatório

0

Tu problema

getUsers() devuelve una string , pero desea tener una matriz de usuarios, no una cadena, porque una string no tiene un método find() .

Simplemente elimine JSON.stringify() en su método getUsers() y funcionará.

 function getUsers(filter, limit, offset) { let userList = []; for (let i = 0; i < 100; i++) { let user = {}; user.id = i; user.firstname = "firstname_" + i; user.lastname = "lastname" + i; user.email = user.userId + "@hotmail.com"; userList.push(user); } // remove a list instead of a string return userList; } let users = getUsers(); console.log(users); const result = users.find((u) => u.id === 0); if (!result) console.log(`User ${result.id} was not found!`); else console.log(`User ${result.id} was found!`);

Algunas observaciones

No tiene sentido llamar explícitamente a una función con todos los parámetros undefined , ya que automáticamente no estarán undefined si no los proporciona, por lo que getUsers() es suficiente.

Tu método getUsers() se puede hacer más conciso y legible usando la función map() y las cadenas de plantilla .

 function getUsers(filter, limit, offset) { return [...new Array(100)].map((_, index) => ({ id: index, firstname: `firstname_${index}`, lastname: `lastname_${index}`, email: `${index}@hotmail.com`, })) } let users = getUsers(); console.log(users); const result = users.find((u) => u.id === 0); if (!result) console.log(`User ${result.id} was not found!`); else console.log(`User ${result.id} was found!`);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda