Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda