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

204
Vistas
¿Son posibles los operadores ternarios en el operatorio ternario?

¿Por qué esta línea no funciona?

 x > highNum ? highNum = x : y > highNum ? highNum = y : highNum = highNum

En este caso, esta línea está en un bucle y x e y son diferentes cada vez. Traté de encontrar el número más alto al final y pensé que esto funcionaría. En mi opinión, esto se lee como: si x es más alto que el número alto, el número alto debería recibir el valor de x asignado, si no es así. es mas grande? en caso afirmativo, y debería ser el nuevo número alto. que no. no cambie el número alto

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

respuesta corta:

Sí lo son.

respuesta larga:

Sí, pero también debería preocuparse por la legibilidad. Su código hace exactamente lo que espera que haga, pero otros desarrolladores (y tal vez usted en el futuro) podrían tener problemas para entenderlo, por lo que le recomiendo enfáticamente que nunca use operadores ternarios anidados, y solo los use cuando tiene más sentido que una simple declaración if else. Y si después de todo esto todavía quieres usarlo, al menos agrega un comentario explicando para qué sirve. ex:

 let highNum for(let line of lines){ const {x, y} = line; // use bubble sort to find the highest number x > highNum ? highNum = x : y > highNum ? highNum = y : highNum = highNum }

editar: Además, esto tampoco es encontrar correctamente el número más alto, como dice "trincot"

over 4 years ago · Santiago Trujillo Denunciar

0

Hay un valor alto potencial que podría pasar por alto: cuando x > highNum , pero también y > x , no verá que y es realmente el más alto, ya que la expresión ya habrá decidido que highNum debería obtener el valor de x .

Puedes hacer esto bastante simple con Math.max :

 highNum = Math.max(x, y, highNum);
over 4 years ago · Santiago Trujillo Denunciar

0

Sí, pero necesitará corchetes, principalmente para facilitar la lectura:

 (x > highNum) ? (highNum = x) : ((y > highNum) ? (highNum = y) : (highNum = highNum));

En su caso, parece que es mejor dividirlo en varias declaraciones para evitar confusiones:

 if (x > highNum) { highNum = x; } else if (y > highNum) { highNum = y; }

aunque eso no cabe en una sola expresión, pero tal vez sea una señal de que su código se está volviendo demasiado complejo/ilegible.

Si solo está buscando el número más alto, quizás Math.max sea todo lo que necesita, es decir, Math.max(x, y, highNum) .

over 4 years ago · Santiago Trujillo 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