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

216
Visualizações
Cómo comprobar qué combinación de variables está definida y proceder en consecuencia

Tengo un caso de uso en el que un usuario puede pasar cierta cantidad de variables en función de las cuales se realizará una lógica específica.

Como la combinación de variables difiere, trato de pensar en una forma elegante de codificar este proceso.

Por ejemplo, el usuario puede pasar name & type o email && schoolId && type otras combinaciones no son compatibles.

Estaba pensando en algo como esto:

 const filterByX = (name && type); const filterByY = (email && schoolId && type); const decision = (filterByX ? 'filterX' : (filterByY ? 'filterY' : null )); switch(decision) { case 'filterX': ... break; case 'filterY': ... break; default: console.log('not supported') }

Pero confío en que hay una forma más elegante de implementar esa lógica. Agradecería una sugerencia.

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Una idea es un objeto codificado con la combinación bit a bit de variables. Por ejemplo, si a , b , c son los booleanos de entrada, cada combinación que le interese se puede codificar como un int 0-7.

 const boolsToBits = (a,b,c) => { return a << 2 | b << 1 | c ; } console.log(boolsToBits(true, true, false)) // == 6

Con eso, puede switch el int resultante o (mejor, imo) describir funciones correspondientes a las condiciones usando datos, usando un objeto ingresado por los ints resultantes.

 const actions = { 7: () => console.log('a, b and c are true'), 6: () => console.log('a, b are true'), 2: () => console.log('only b is true'), } const defaultAction = () => console.log('a combo not coded for explicitly') const boolsToBits = (a, b, c) => { return a << 2 | b << 1 | c; } const handleThreeBools = (a, b, c) => { const action = actions[boolsToBits(a, b, c)] || defaultAction; action(); } handleThreeBools(true, true, true); handleThreeBools(true, true, false); handleThreeBools(false, true, false); handleThreeBools(false, true, true);

La idea se puede generalizar para un número arbitrario de bools como este...

 const actions = { 7: () => console.log('a, b and c are true'), 6: () => console.log('a, b are true'), 2: () => console.log('only b is true'), 33: () => console.log('thats a lot of bits!') } const defaultAction = () => console.log('a combo not coded for explicitly') const boolsToBitsN = (...args) => { const length = args.length; let result = 0; for (let i = 0; i < length; i++) result |= args[i] << (length - 1 - i); return result } const handleNBools = (...args) => { const action = actions[boolsToBitsN(...args)] || defaultAction; action(); } handleNBools(true, false, false, false, false, true);

Y, por supuesto, el objeto que contiene funciones codificadas por ints puede expandirse en consecuencia.

about 4 years ago · Santiago Gelvez 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