tengo un objeto
{ "undefined": 10, "women": 5, "men": 3, }Y necesito ordenarlo, para que se vea como
{ "men": 3, "women": 5, "undefined": 10, }¿Cómo puedo hacerlo?
He intentado ordenarlo así, pero funciona alfabéticamente.
const object = { "undefined": 10, "women": 3, "men": 6 } const entries = Object.entries(object).sort(); const sortedObject = Object.fromEntries(entries); console.log(sortedObject); /* Expected result: { "men": 6, "women": 3, "undefined": 10 } */Esto es lo que estoy tratando de hacer:
statsParser.js
import { t } from "i18n"; export default (genders) => { if (!genders) return; const entries = Object.entries(genders).sort(([, a], [, b]) => b - a); // What if I want to order the map so it looks like { men: x, women: y, undefined: z } instead of by value in desc order? const translatedEntries = entries.map((entry) => [ t(`content.stats.genders.${entry[0].toLowerCase()}`), entry[1], ]); const translatedGenders = Object.fromEntries(translatedEntries); return translatedGenders; };Para ordenar el objeto json usando key es fácil como se muestra a continuación:
const unordered = { "undefined": 10, "women": 5, "men": 3, } const ordered = Object.keys(unordered).sort().reduce( (obj, key) => { obj[key] = unordered[key]; return obj; }, {} ); console.log(JSON.stringify(ordered)); Para ordenar el objeto json usando el value , necesita convertir su objeto en una matriz usando Object.entries . Luego, ordena esa matriz usando el valor y prepara la cadena usando la función de mapa y finalmente la analiza en json.
const unordered = { "undefined": 10, "women": 5, "men": 3, } const arrOfArrays = Object.entries(unordered); const ordered = arrOfArrays.sort((a, b) => { const aVal = Object.values(a)[1]; const bVal = Object.values(b)[1]; return aVal - bVal; }); var jsonString = "{"; ordered.map(obj => { var json = { ...obj }; jsonString += `"${json[0]}":"${json[1]}",`; }); jsonString = jsonString.replace(/,\s*$/, ""); jsonString += "}"; console.log(JSON.parse(jsonString));