Tengo un objeto anidado que se parece a esto. Quiero clasificarlo en orden ascendente y descendente según el orden alfabético de los nombres de distrito.
var data = {"DistrictC":{"population":105597}, "DistrictB":{"population":36842}, "DistrictA":{"population":238142}}La salida esperada en orden ascendente se muestra a continuación. También necesito ordenar en orden descendente.
{"DistrictA":{"population":238142}, "DistrictB":{"population":36842}, "DistrictC":{"population":105597}}Puede usar Object.entries para obtener una matriz de pares clave/valor y luego ordenar las claves usando localeCompare :
const data = { "DistrictC":{"population":105597}, "DistrictB":{"population":36842}, "DistrictA":{"population":238142} } const sorted = Object.entries(data) .sort(([keyA], [keyB]) => keyA.localeCompare(keyB)); console.log(sorted);Podría hacer que ese resultado sea un poco más fácil de trabajar al colapsar las matrices clave/valor en objetos usando map :
// same as before const data = { "DistrictC":{"population":105597}, "DistrictB":{"population":36842}, "DistrictA":{"population":238142} } // same as before const sorted = Object.entries(data) .sort(([keyA], [keyB]) => keyA.localeCompare(keyB)); const collapsed = sorted.map(([district, value]) => ({ district, ...value })); // ascending console.log(collapsed); // descending console.log(collapsed.reverse());