Uso esta función para ordenar conjuntos de objetos anidados (JSON) en Javascript (el inglés no es mi idioma nativo)
nestedSort = (prop1, prop2 = null, direction = 'asc') => (e1, e2) => { const a = prop2 ? e1[prop1][prop2] : e1[prop1], b = prop2 ? e2[prop1][prop2] : e2[prop1], sortOrder = direction === "asc" ? 1 : -1 return (a < b) ? -sortOrder : (a > b) ? sortOrder : 0; }previamente limpié todos los valores nulos de la matriz con esta función
array = JSON.parse(JSON.stringify(array), (key, value) => value === null ? '' : value);el problema que tengo es que solo ordena valores de cadena y valores de fecha, los valores numéricos se tratan como cadenas, necesito algunos consejos sobre qué puedo agregar a la función nestedSort para que funcione ordenando dinámicamente: cadenas, fechas y valores numéricos?
llamo a la función con este código
objJson = objJson.sort(nestedSort(value, null, records_order));[Resuelto] Nose si fue la mejor manera, agradecere si alguien tiene una mejor manera de hacerlo
nestedSort = (prop1, prop2 = null, direction = 'asc') => (e1, e2) => { const a = prop2 ? e1[prop1][prop2] : e1[prop1], b = prop2 ? e2[prop1][prop2] : e2[prop1], sortOrder = direction === "asc" ? 1 : -1 if (isNaN(a) && isNaN(b)){ return (a < b) ? -sortOrder : (a > b) ? sortOrder : 0; }else{ return sortOrder == 1 ? (a - b) : (b - a); } }