Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

184
Vistas
¿Cómo mapeo datos con diccionarios anidados?

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í: ingrese la descripción de la imagen aquí

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>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

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)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda