Tengo una tabla con nombres de columnas dentro de <th> y solo números dentro de <td> . Cuando hago clic en <th> , el algoritmo de clasificación ordena los valores asc o desc.
.sortElements(function (a, b) { return $.text([a]) > $.text([b]) ? inverse ? -1 : 1 : inverse ? 1 : -1; } Esto ordena el texto, pero existe el eterno problema de la string vs number . Esto se clasifica como una cadena, por lo que 10 es más pequeño que 2, así que hice esto
.sortElements(function (a, b) { return parseInt($.text([a]),10) > parseInt($.text([b]),10) ? inverse ? -1 : 1 : inverse ? 1 : -1; }Esto es ordenar de la manera correcta (correcta para mis necesidades) si solo tienes números y 10 es mayor que 2. Ahora te pregunto... ¿Hay una mejor manera de hacer esto?
¿Qué pasa si también tienes letras dentro de <td> ? ¿Qué se debe hacer? ¿Esto es para alguien que necesita que esto funcione correctamente sin importar lo que haya dentro de <td> ...?
Puede usar el constructor Number() para una mejor legibilidad
.sortElements(function (a, b) { return Number($.text([a])) > Number($.text([b])) ? inverse ? -1 : 1 : inverse ? 1 : -1; }