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

191
Vistas
¿Cómo puedo reducir la duplicación en mi JavaScript si la sintaxis?

Quiero reducir la duplicación en mi sintaxis de JavaScript.

No importa cuánto lo piense, no me viene a la mente.

¡No importa si es for loop o cualquier sintaxis!

agrego algo de caso y resultado

si si es respuesta correcta seria resultado

 // case 1 // const max = [1, 31, 0, 0] // const min = [1, 31]; // result = [3, 5] // case 2 // const max = [0, 0, 0, 0, 0, 0] // const min = [0, 0] // result = [1, 6] // case 3 // const max = [45, 4, 35, 20, 3, 9] // const min = [45, 4, 35, 20, 3, 9] // result = [1, 1] if (max.length === 6) { answer[0] = 1; } else if (max.length === 5) { answer[0] = 2; } else if (max.length === 4) { answer[0] = 3; } else if (max.length === 3) { answer[0] = 4; } else if (max.length === 2) { answer[0] = 5; } else { answer[0] = 6; } if (min.length === 6) { answer[1] = 1; } else if (min.length === 5) { answer[1] = 2; } else if (min.length === 4) { answer[1] = 3; } else if (min.length === 3) { answer[1] = 4; } else if (min.length === 2) { answer[1] = 5; } else { answer[1] = 6; }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

¿La longitud máxima y mínima está entre 1 y 6? porque a juzgar por tu código, parece que sí.

 answer[0] = 7 - max.length

Seguro que se ve un poco mejor, al menos podrías eliminar muchos bloques if y dejar el bloque else en caso de que max.length no sea un número entero entre 1 y 6

 //pseudocode if( max.length between 1 and 6 inclusive) { answer[0] = 7- max.length } else { answer[0] = some default value, 6? }

el 7 parece un número mágico, pero con más contexto, puedes nombrarlo algo mejor

about 4 years ago · Juan Pablo Isaza Denunciar

0

Al reducir la duplicación, ¿quiere decir que desea disminuir la longitud de su código o aumentar la legibilidad?

Si desea aumentar la legibilidad, algunas personas prefieren select/case que if/elseif :

 switch(max.length) { case 6: answer[0] = 1; break; case 5: answer[0] = 2; break; case 4: answer[0] = 3; break; case 3: answer[0] = 4; break; case 2: answer[0] = 5; break; default: answer[0] = 6; }

Si desea reducir la longitud, puede hacer algo como dijo @Bergi en el comentario:

 answer = [7-max.length, 7-min.length];

Pero si la variable max y min proviene de la entrada del usuario o de una fuente externa, puede ocurrir algo inesperado:

 max = {length: -5}; min = {length: -99}; answer = [7-max.length, 7-min.length]; console.log(answer) // outputs [12,106]

El código puede generar un número fuera del rango de 1 a 6 enteros.

Por lo tanto, también debe agregar algo de Math.max y Math.min si desea que su código se comporte exactamente como su declaración if-elseif:

 max = {length: -5}; min = {length: -99}; answer = [ Math.max(Math.min(7-max.length,1),6), Math.max(Math.min(7-min.length,1),6) ]; console.log(answer) // outputs [6,6]

Por supuesto, si toma información de una fuente externa, primero debe desinfectarla/validarla, pero si es una exageración, también puede usar la función Math.min y Math.max anterior.

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const getAnswers = x => (x < 1 || x > 6) ? 6 : 7 - x; // case 1 let max = [1, 31, 0, 0] let min = [1, 31]; // result = [3, 5] let answer = [getAnswers(max.length), getAnswers(min.length)]; console.log('max.length: ', max.length, ' min.length: ', min.length, ' answer array: ', answer); // case 2 max = [0, 0, 0, 0, 0, 0] min = [0] // result = [1, 6] answer = [getAnswers(max.length), getAnswers(min.length)]; console.log('max.length: ', max.length, ' min.length: ', min.length, ' answer array: ', answer); // case 3 max = [45, 4, 35, 20, 3, 9] min = [45, 4, 35, 20, 3, 9] // result = [1, 1] answer = [getAnswers(max.length), getAnswers(min.length)]; console.log('max.length: ', max.length, ' min.length: ', min.length, ' answer array: ', answer);

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