Necesito esta matriz ordenada por clave (día de la semana). Actualmente se muestra como domingo - viernes
"weekOverview": { "Sunday": 0.1111111111112, "Monday": 0.1111111111111, "Tuesday": 0.1100204936741015, "Wednesday": 0.8655145400508841, "Thursday": 0.2206230378805767, "Friday": 0.7633485206232166, "Saturday": 1.6047637274510986},
Sin embargo, necesito que se muestre como lunes - domingo
"weekOverview": { "Monday": 0.1111111111111, "Tuesday": 0.1100204936741015, "Wednesday": 0.8655145400508841, "Thursday": 0.2206230378805767, "Friday": 0.7633485206232166, "Saturday": 1.6047637274510986 "Sunday": 0.1111111111112,},
¡Gracias por adelantado!
Aquí hay un método sortByDays que hace exactamente lo que quieres que haga.
Utilizamos Object.keys, así como un objeto clasificador personalizado.
const weekOverview = { Sunday: 0.1111111111112, Monday: 0.1111111111111, Tuesday: 0.1100204936741015, Wednesday: 0.8655145400508841, Thursday: 0.2206230378805767, Friday: 0.7633485206232166, Saturday: 1.6047637274510986, }; const sortByDays = (obj) => { const sorter = { Monday: 1, Tuesday: 2, Wednesday: 3, Thursday: 4, Friday: 5, Saturday: 6, Sunday: 7, }; const newMap = {}; Object.keys(obj) .sort((a, b) => { return sorter[a] - sorter[b]; }) .forEach((item) => { newMap[item] = weekOverview[item]; }); return newMap; }; console.log(sortByDays(weekOverview))Mejor solución:
const weekOverview = { Sunday: 0.1111111111112, Monday: 0.1111111111111, Tuesday: 0.1100204936741015, Wednesday: 0.8655145400508841, Thursday: 0.2206230378805767, Friday: 0.7633485206232166, Saturday: 1.6047637274510986, }; const sortWeek = (obj) => { const week = { Monday: null, Tuesday: null, Wednesday: null, Thursday: null, Friday: null, Saturday: null, Sunday: null, }; for (const [key, value] of Object.entries(week)) { if (obj[key]) week[key] = obj[key]; } return week; }; console.log(sortWeek(weekOverview));