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

167
Vistas
Ciertas propiedades planas en un objeto Javascript

Tener una respuesta de una base de datos con el siguiente formato

 { "data": [ { "id": 1, "attributes": { "active": true, "details": "TEST", "client": { "data": { "id": 1, "attributes": { "code": "20000", "technology": { "data": { "id": 2, "attributes": { "name": "TEST" } } } } } } } } ], "meta": { "pagination": { "page": 1, "pageSize": 25, "pageCount": 1, "total": 2 } } }

Cada población de una relación tiene una propiedad de datos, dentro tiene una identificación y otras propiedades llamadas atributos donde se guardan los datos reales. La cuestión es que manejar esto desde la interfaz es un desastre porque tienes que acceder a dos claves adicionales por nivel de relación "datos" y "atributos", así que si quieres acceder al nombre de un barrio de una ciudad, la llamada es como

 city.data.attributes.neighborhood.data.attributes.name

Quiero deshacerme de las claves de datos y atributos y simplificar el objeto de esta manera

 { "active": true, "details": "TEST", "client": { "id": 1, "code": "20000", "technology": { "id": 2, "name": "TEST" } } }

que es lo mismo pero sin las claves de datos y atributos. Tengo que hacer esto de forma recursiva porque no puedo saber cuántos niveles necesitaré.

Tengo este código pero creo que estoy lejos de una respuesta correcta a este problema

 function flatten (obj) { const flattened = {} Object.keys(obj).forEach((key) => { const value = obj[key] if (typeof value === 'object' && value !== null && !Array.isArray(value)) { if (key === 'attributes') { Object.assign(flattened, flatten(value)) } else { flattened[parent] = flatten(value, key) } } else if (Array.isArray(value) && key === 'data') { value.forEach((item) => { Object.assign(flattened, flatten(item)) }) } else { flattened[key] = value } }) return flattened }

el código de respuesta es de Strapi headless CMS versión 4.0.6

about 4 years ago · Juan Pablo Isaza
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