¿Por qué esta línea no funciona?
x > highNum ? highNum = x : y > highNum ? highNum = y : highNum = highNumEn 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
Sí lo son.
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"
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);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) .