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

211
Visualizações
Cómo optimizar este método (Encontrar un artículo con dos búsquedas)

tengo ese objeto con dos listas dentro.

 const list = { Operator: [ { Login: 'login1', PermissionGroup: '2', Sub: '3', }, { Login: 'login2', PermissionGroup: '3', Sub: '2', }, ], PermissionGroups: [ { PermissionGroupId: '2', GroupsName: 'Gestor', PermissionLevel: 2, }, { PermissionGroupId: '3', GroupsName: 'Lider', PermissionLevel: 3, }, ], };

En mi redux, tengo el "Sub" de los Operadores. Entonces que tengo que hacer...

Paso 1: obtenga mi "sub" de Redux y encuentre en qué operador está

Paso 2: Ahora que tengo el Operador, necesito encontrar qué operador corresponde a PermissionGroup, usando PermissioninGroup (en Operadores) y PermissionGroupId (en PermissionGroups)

Este método hace lo que quiero (Ignorar el retorno final), ¿Cómo optimizo este método? No quería usar dos filtros para esto.

 const search = (sub) => { const usuario = listaUsuarios.filter((element) => element.Sub === sub)[0]; const permissaoUsuario = listaPermissoes.filter( (element) => element.PermissionGroupId === usuario.PermissionGroup )[0]; return permissaoUsuario.PermissionLevel; };
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Personalmente, la solución actual parece estar bien (por supuesto, si se confirma que solo se requiere el elemento 0-th de .filter() , puede ser preferible usar .find() en su lugar). Dado que OP ha solicitado una alternativa, la solución a continuación (que no es mi recomendación) puede lograr el objetivo deseado.

Fragmento de código

 const searchSub = (needle, {Operator, PermissionGroups}) => ( [...Operator, ...PermissionGroups].reduce( (res, obj) => ({ ...res, ...( 'Sub' in obj && obj.Sub === needle ? {foundSub: {...obj}} : 'PermissionGroup' in res.foundSub && 'PermissionGroupId' in obj && obj.PermissionGroupId === res.foundSub.PermissionGroup ? {matchedPermissionGroup: {...obj}} : {} ) }), {foundSub: {}, matchedPermissionGroup: {}} ) ); const list = { 'Operator': [{ 'Login': 'login1', 'PermissionGroup': '2', 'Sub': '3', }, { 'Login': 'login2', 'PermissionGroup': '3', 'Sub': '2', } ], 'PermissionGroups': [{ 'PermissionGroupId': '2', 'GroupsName': 'Gestor', 'PermissionLevel': 2, }, { 'PermissionGroupId': '3', 'GroupsName': 'Lider', 'PermissionLevel': 3, }, ] }; console.log(searchSub('2', list)) console.log( 'PermissionLevel: ', searchSub('2', list)?.matchedPermissionGroup.PermissionLevel );

Explicación

  • Use ... operador de extensión para construir una matriz con elementos de la matriz Operator y PermissionGroups
  • Use .reduce() para iterar sobre esta matriz combinada
  • Cuando se encuentra un Sub , rastrearlo en el objeto res
  • Cuando se encuentre un PermissionGroupId coincidente, rastree eso también
  • El objeto res resultante tendrá elementos de la matriz Operator y PermissionGroups que coincidieron.

NOTA

  • Solo para reiterar, en realidad es más simple usar dos .find() separados en este contexto.
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