Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!