Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda