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

146
Views
No se pueden establecer propiedades de indefinido por iteración del JSON anidado

Tengo un JSON anidado, esto está estructurado de la siguiente manera: ingrese la descripción de la imagen aquí

Como puedes ver el JSON se llama bwaResult y en este objeto hay tres grandes grupos. Estos grupos se denominan actBwa, fcBwa y planBwa. Estos grupos contienen años y resultados anuales (sumas) que también tienen años. Me gustaría asignar los valores a los años individuales. Eso significa que en 2020 tendría actBwa, fcBwa, planBwa y los valores de resultados anuales y lo mismo para los demás años.

Mi código:

 const plMonthResults = {}; const plMonth = resp.success ? resp.bwaResult : null; // JSON-DATA delete resp.success; if (plMonth && plMonth !== null && Object.keys(plMonth)) { let count = 0; for (const bwaType in plMonth) { const plMonthData = plMonth[bwaType]; // Here I get actBwa, fcBwa, planBwa if (count === 0) { for (const yearKey of Object.keys(plMonthData)) { plMonthResults[yearKey] = {}; // Sort by years } } for (const yearKeyInPlMonth in plMonthData) { plMonthResults[yearKeyInPlMonth][bwaType] = plMonthData[yearKeyInPlMonth]; // Here then arises the error } count += 1; } }

Cuando ejecuto el código, aparece el siguiente error:

 ERROR TypeError: Cannot set properties of undefined (setting 'fcBwa')

Supongo que dado que actBwa solo tiene 2020 y los otros grupos tienen más años, hay un problema para encontrar fcBwa e iterar más o estoy viendo esto mal. ¿Puedes decirme cómo resolver este problema?

ACTUALIZAR mi trabajo en stackblitz: https://stackblitz.com/edit/read-local-json-file-service-udqvck?file=src%2Fapp%2Fapp.component.ts

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Parece que está usando count para copiar las claves solo una vez, pero eso significa que solo tendrá las claves del primer objeto (en este caso, actBwa ). En su lugar, puede revisar la clave de cada objeto, pero asegúrese de no anular los existentes. Así que elimine el count y modifique el aspecto así

 for (const yearKey of Object.keys(plMonthData)) { plMonthResults[yearKey] = plMonthResults[yearKey] ?? {}; }

Incluso puede eliminar este ciclo e incluir el cheque en el principal:

 for (const yearKeyInPlMonth in plMonthData) { plMonthResults[yearKeyInPlMonth] = plMonthResults[yearKeyInPlMonth] ?? {}; plMonthResults[yearKeyInPlMonth][bwaType] = plMonthData[yearKeyInPlMonth]; }

Avísame si eso te da el resultado que buscas.

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