Estoy usando la siguiente función para ordenar un objeto por claves.
El problema es que cuando tengo que ordenar '05' y '10', el '10' se ordena antes que el '05'
function sortObj(obj) { return Object.keys(obj).sort().reduce(function(result, key) { result[key] = obj[key]; return result; }, {}); } let list = { '10': "Ann", '05': 75 }; let arr = sortObj(list); console.log(arr);Objeto { "10": 75, "05": "Ann" }
Los objetos de Javascript no están ordenados por orden de inserción. Para demostrarlo, cambie .sort() a .reverse()
¿JavaScript garantiza el orden de las propiedades de los objetos?
Parece que puedes usar un mapa: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Objects_and_maps_compared
Ordenar un objeto tiene poco sentido, porque los objetos no se preocupan por el orden en que se accede a sus valores mediante una clave.
Aunque puede almacenar sus datos en un Map que tiene una estructura de clave-valor que respeta su orden de inserción.
function sortObj(obj) { return new Map( Object.entries(obj).sort(([a], [b]) => { return a - b; }) ); } let list = { '11': 'Beth', '10': "Ann", '05': 75, '07': true }; let map = sortObj(list); for (const [key, value] of map) { console.log(key, value); }