Uso KO JS y tuve un problema al mostrar las claves de las claves raíz. Hice una pregunta al respecto y obtuve algunos avances, pero aún así, el problema no está resuelto. ENLACE A LA PREGUNTA ANTERIOR
Supuse que mis datos necesitaban mapeo. Los datos que obtengo del back-end se ven así: 
Aquí está la versión de texto de los datos de muestra
"Pricings": { "2021-22": { "Tbilisi": { "PriceHeaders": [ ], "Comment": "TBi", "Pricings": [ { } ] }, "2020-21": { "Tbilisi": { "PriceHeaders": [ ], "Comment": "TBi", "Pricings": [ { } ] } } }Estoy pensando en recrear datos como este: de:
2020-21 : { Tbilisi: {PriceHeaders: Array(9), Comment: 'TBi', Pricings: Array(1)} }A :
Year : 2020-21 Cities : { Tbilisi: {PriceHeaders: Array(9), Comment: 'TBi', Pricings: Array(1)} }Después de eso, puedo ejecutar un foreach simple y obtener Values of Year y Any key de Cities .
se me ocurrió algo como esto
Object.entries(data).map(([year, cities]) => ( { "year": year, "cities": Object.entries(cities).map(([name, cities]) => ( { name, ...cities } )) } ))El problema es que no puedo hacer uso de este código en el enlace de datos
<div data-bind="data : THIS FUNCTION HERE , as 'result'"></div>Este problema ya se ha resuelto con esta respuesta.
El código clave es:
.reduce( // You can also use: `for ... in`, `Object.keys`, etc. // search for "Iterate over js object" to learn more (data, coupon) => data.concat(Object.entries(coupon)), [] ) // Here we construct a simple viewmodel to make our data-binds easier .map(([k, v]) => ({ key: k, value: v }))Lo que esto hará por sus datos es envolver los datos que ya tiene en un objeto contenedor, por lo que con sus datos de ejemplo se compondría...
{ key: "2020-21", value: { Tbilisi: { PriceHeaders: Array(9), Comment: 'TBi', Pricings: Array(1) } } }...de su estructura original
2020-21 : { Tbilisi: {PriceHeaders: Array(9), Comment: 'TBi', Pricings: Array(1)} } Esto significa que cuando itera sobre la función pureComputed en su plantilla kojs, podrá acceder al año con [binding]: key y los datos anidados con [binding: value
También es posible que desee buscar en el complemento de 'mapeo' en la eliminación de los valores del objeto, para que se actualice cuando se cambien los datos (a menos que siempre sea estático)