El resultado del objeto esperado de Javascript no se obtiene al ordenar los números de valor (y tanto la clave como el valor también son números)
let team_id_Point = { 26: 15, 32: 1, 127: 21, }; function sortObjectbyValue(obj = {}, asc = true) { const ret = {}; Object.keys(obj) .sort((a, b) => obj[asc ? a : b] - obj[asc ? b : a]) .forEach((s) => (ret[s] = obj[s])); return JSON.stringify(ret); } console.log(sortObjectbyValue(team_id_Point, false));resultado de arriba:
{"26":15,"32":1,"127":21}salida requerida:
{"127":21,"26":15,"32":1}Aunque las propiedades de los objetos de JavaScript ahora tienen un orden , depender de su orden es un antipatrón .
Si necesita orden, use una matriz.
salida requerida
No puede obtener el resultado requerido con un objeto JavaScript porque:
JSON.stringify sigue el orden de propiedad del objeto. También tenga en cuenta que JSON (a diferencia de JavaScript) considera objetos "... un conjunto desordenado de pares de nombre/valor..." Así que para JSON, {"a": 1, "b": 2} y {"b": 2, "a": 1} son exactamente equivalentes.
Podría usar un Map , pero entonces la representación JSON no sería lo que espera.
O puede compilar el JSON manualmente (ignorando que JSON no considera que los objetos tengan ningún orden), usando JSON.stringify para los valores pero generando { , nombres de propiedades y } usted mismo.
Pero realmente, si necesita orden, use una matriz.
Aquí hay un ejemplo usando una matriz de matrices:
let team_id_Point = [ [26, 15], [32, 1], [127, 21], ]; function sortTeamIdPoint(data = [], asc = true) { const result = [...data]; const sign = asc ? 1 : -1; result.sort((a, b) => (a[0] - b[0]) * sign); return JSON.stringify(result); } console.log(sortTeamIdPoint(team_id_Point, false));O una matriz de objetos:
let team_id_Point = [ {id: 26, points: 15}, {id: 32, points: 1}, {id: 127, points: 21}, ]; function sortTeamIdPoint(data = [], asc = true) { const result = [...data]; const sign = asc ? 1 : -1; result.sort((a, b) => (a.id - b.id) * sign); return JSON.stringify(result); } console.log(sortTeamIdPoint(team_id_Point, false));