Angular 8 Typescript сглаживает вложенный массив - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть вложенные JSON данные, которые мне нужно выровнять, чтобы отобразить все параметры для пользователя в таблице без выпадающих списков.

Данные выглядят примерно так ...

0:
ID: 4
Date: "2019-08-09T00:00:00"
Data:
Year: 2019
Identification: "F31073"
nestedArray: Array(1)
   0:
      array1ID: "31"
      array1Code: "073"
      nestedArray2: Array(4)
      0:
        array2info: 24
        nestedArray3: Array(8)
          0:
          array3Identifier: "ECF5EE44-50E1-4F07-AB38-CF7A60A6276F"
          array3Number: 31
          arrayThreeIndicator: "N"
          nestedArray4: Array(1)
             0:
             array4Info: "31"
             array4Code: "073"

Я посмотрел на многие решения, но ни одно из них не вернуло мне плоский массив данных.

ОБНОВЛЕНИЕ Вот данные JSON, которые я пытаюсь сгладить так, чтобы для каждого вложенного массива поля до того, как оно будет продублировано, и все данные будут видны без вложенных массивов.

"[{"FileCustomerIdentifier":4,"TransmissionDate":"2019-08- 
 09T00:00:00","TransmissionData":"{\r\n  \"cropYear\": 2019,\r\n  
 \"originatorIdentification\": \"F31073\",\r\n  \"farm\": [\r\n    {\r\n      
 \"administrativeStateFsaCode\": \"31\",\r\n      
 \"administrativeCountyFsaCode\": \"073\",\r\n      \"farmNumber\": 
  4609,\r\n      
 \"tract\": [\r\n        {\r\n          \"tractNumber\": 24,\r\n          
 \"field\": [\r\n            {\r\n              \"cluIdentifier\": 
 \"ECF5EE44-50E1-4F07-AB38-CF7A60A6276F\",\r\n              
 \"fieldNumber\": 
 31,\r\n              \"cluProducerReviewRequestIndicator\": \"N\",\r\n              
 \"agriculturalProductionPlan\": [\r\n                {\r\n                  
 \"stateAnsiCode\": \"31\",\r\n                  \"countyAnsiCode\": 
 \"073\",\r\n                  \"coreProductCode\": \"0102\",\r\n                  
 \"coreProductTypeCode\": \"0794\",\r\n                  
 \"productIntendedUseCode\": \"0007\",\r\n                  
 \"originalReportedAcreage\": 109.93,\r\n                  
 \"finalReportedAcreage\": 109.93,\r\n                  
 \"reportedAcreageModifiedIndicator\": \"N\",\r\n                  
 \"plantedDateModifiedIndicator\": \"N\",\r\n                  
 \"productPlantingCode\": null,\r\n                  
 \"irrigationPracticeCode\": \"N\",\r\n                  
 \"organicPracticeTypeCode\": \"N\",\r\n                  
 \"croppingPracticeCode\": 997,\r\n                  \"producerShare\": 
 [\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 2,\r\n                      
 \"producerSharePercent\": 1\r\n                    }\r\n                  
 ]\r\n                }\r\n              ]\r\n            },\r\n            
 {\r\n              \"cluIdentifier\": \"5E83C2F1-6399-46DD-8695- 
 90CEAAF02721\",\r\n              \"fieldNumber\": 32,\r\n              
 \"cluProducerReviewRequestIndicator\": \"N\",\r\n              
 \"agriculturalProductionPlan\": [\r\n                {\r\n                  
 \"stateAnsiCode\": \"31\",\r\n                  \"countyAnsiCode\": 
 \"073\",\r\n                  \"coreProductCode\": \"0041\",\r\n                  
 \"coreProductTypeCode\": \"0964\",\r\n                  
 \"productIntendedUseCode\": \"0016\",\r\n                  
 \"originalReportedAcreage\": 43.73,\r\n                  
 \"finalReportedAcreage\": 43.73,\r\n                  
 \"reportedAcreageModifiedIndicator\": \"N\",\r\n                  
 \"originalPlantedDate\": \"2019-05-02\",\r\n                  
 \"finalPlantedDate\": \"2019-05-02\",\r\n                  
 \"plantedDateModifiedIndicator\": \"N\",\r\n                  
 \"productPlantingCode\": null,\r\n                  
 \"irrigationPracticeCode\": \"N\",\r\n                  
 \"organicPracticeTypeCode\": \"N\",\r\n                  
 \"croppingPracticeCode\": 997,\r\n                  \"producerShare\": 
 [\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 4,\r\n                      
 \"producerSharePercent\": 0.5\r\n                    },\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 5,\r\n                      
 \"producerSharePercent\": 0.5\r\n                    }\r\n                  
 ]\r\n                }\r\n              ]\r\n            },\r\n            
 {\r\n              \"cluIdentifier\": \"0E021A77-6BA2-4FAA-A522- 
 A1F383C0FBF5\",\r\n              \"fieldNumber\": 29,\r\n              
 \"cluProducerReviewRequestIndicator\": \"N\",\r\n              
 \"agriculturalProductionPlan\": [\r\n                {\r\n                  
 \"stateAnsiCode\": \"31\",\r\n                  \"countyAnsiCode\": 
 \"073\",\r\n                  \"coreProductCode\": \"0102\",\r\n                  
 \"coreProductTypeCode\": \"0794\",\r\n                  
 \"productIntendedUseCode\": \"0007\",\r\n                  
 \"originalReportedAcreage\": 11.77,\r\n                  
 \"finalReportedAcreage\": 11.77,\r\n                  
 \"reportedAcreageModifiedIndicator\": \"N\",\r\n                  
 \"plantedDateModifiedIndicator\": \"N\",\r\n                  
 \"productPlantingCode\": null,\r\n                  
 \"irrigationPracticeCode\": \"N\",\r\n                  
 \"organicPracticeTypeCode\": \"N\",\r\n                  
 \"croppingPracticeCode\": 997,\r\n                  \"producerShare\": 
 [\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 2,\r\n                      
 \"producerSharePercent\": 1\r\n                    }\r\n                  
 ]\r\n                }\r\n              ]\r\n            },\r\n            
 {\r\n              \"cluIdentifier\": \"BFE94518-7B5E-40A3-BF71- 
 0EA6B932C3F9\",\r\n              \"fieldNumber\": 28,\r\n              
 \"cluProducerReviewRequestIndicator\": \"N\",\r\n              
 \"agriculturalProductionPlan\": [\r\n                {\r\n                  
 \"stateAnsiCode\": \"31\",\r\n                  \"countyAnsiCode\": 
 \"073\",\r\n                  \"subfieldNumber\": \"A\",\r\n                  
 \"coreProductCode\": \"0102\",\r\n                  
 \"coreProductTypeCode\": 
 \"0794\",\r\n                  \"productIntendedUseCode\": \"0007\",\r\n                  
 \"originalReportedAcreage\": 52.0,\r\n                  
 \"finalReportedAcreage\": 52.0,\r\n                  
 \"reportedAcreageModifiedIndicator\": \"N\",\r\n                  
 \"plantedDateModifiedIndicator\": \"N\",\r\n                  
 \"productPlantingCode\": null,\r\n                  
 \"irrigationPracticeCode\": \"N\",\r\n                  
 \"organicPracticeTypeCode\": \"N\",\r\n                  
 \"croppingPracticeCode\": 997,\r\n                  \"producerShare\": 
  [\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 2,\r\n                      
 \"producerSharePercent\": 1\r\n                    }\r\n                  
 ]\r\n                }\r\n              ]\r\n            },\r\n            
 {\r\n              \"cluIdentifier\": \"9ac10b70-0d9d-4a38-97f7- 
 22e63a3c0f9d\",\r\n              \"fieldNumber\": 2,\r\n              
 \"cluProducerReviewRequestIndicator\": \"N\",\r\n              
 \"agriculturalProductionPlan\": [\r\n                {\r\n                  
 \"stateAnsiCode\": \"31\",\r\n                  \"countyAnsiCode\": 
 \"073\",\r\n                  \"subfieldNumber\": \"A\",\r\n                  
 \"coreProductCode\": \"0102\",\r\n                  
 \"coreProductTypeCode\": 
 \"0794\",\r\n                  \"productIntendedUseCode\": \"0013\",\r\n                  
 \"originalReportedAcreage\": 0.22,\r\n                  
 \"finalReportedAcreage\": 0.22,\r\n                  
 \"reportedAcreageModifiedIndicator\": \"N\",\r\n                  
 \"plantedDateModifiedIndicator\": \"N\",\r\n                  
 \"productPlantingCode\": null,\r\n                  
 \"irrigationPracticeCode\": \"N\",\r\n                  
 \"organicPracticeTypeCode\": \"N\",\r\n                  
 \"croppingPracticeCode\": 997,\r\n                  \"producerShare\": 
 [\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 2,\r\n                      
 \"producerSharePercent\": 1\r\n                    }\r\n                  
 ]\r\n                },\r\n                {\r\n                  
 \"stateAnsiCode\": \"31\",\r\n                  \"countyAnsiCode\": 
 \"073\",\r\n                  \"subfieldNumber\": \"B\",\r\n                  
 \"coreProductCode\": \"0041\",\r\n                  
 \"coreProductTypeCode\": 
 \"0964\",\r\n                  \"productIntendedUseCode\": \"0016\",\r\n                  
 \"originalReportedAcreage\": 18.58,\r\n                  
 \"finalReportedAcreage\": 18.58,\r\n                  
 \"reportedAcreageModifiedIndicator\": \"N\",\r\n                  
 \"originalPlantedDate\": \"2019-05-02\",\r\n                  
 \"finalPlantedDate\": \"2019-05-02\",\r\n                  
 \"plantedDateModifiedIndicator\": \"N\",\r\n                  
 \"productPlantingCode\": null,\r\n                  
 \"irrigationPracticeCode\": \"N\",\r\n                  
 \"organicPracticeTypeCode\": \"N\",\r\n                  
 \"croppingPracticeCode\": 997,\r\n                  \"producerShare\": 
 [\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 5,\r\n                      
 \"producerSharePercent\": 0.5\r\n                    },\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 4,\r\n                      
 \"producerSharePercent\": 0.5\r\n                    }\r\n                  
 ]\r\n                }\r\n              ]\r\n            },\r\n            
 {\r\n              \"cluIdentifier\": \"940ebc4b-fdc9-4cae-b9af- 
 b0b360afba5f\",\r\n              \"fieldNumber\": 4,\r\n              
 \"cluProducerReviewRequestIndicator\": \"N\",\r\n              
 \"agriculturalProductionPlan\": [\r\n                {\r\n                  
 \"stateAnsiCode\": \"31\",\r\n                  \"countyAnsiCode\": 
 \"073\",\r\n                  \"subfieldNumber\": \"A\",\r\n                  
 \"coreProductCode\": \"0041\",\r\n                  
 \"coreProductTypeCode\": 
 \"0964\",\r\n                  \"productIntendedUseCode\": \"0016\",\r\n                  
 \"originalReportedAcreage\": 10.64,\r\n                  
 \"finalReportedAcreage\": 10.64,\r\n                  
 \"reportedAcreageModifiedIndicator\": \"N\",\r\n                  
 \"originalPlantedDate\": \"2019-05-02\",\r\n                  
 \"finalPlantedDate\": \"2019-05-02\",\r\n                  
 \"plantedDateModifiedIndicator\": \"N\",\r\n                  
 \"productPlantingCode\": null,\r\n                  
 \"irrigationPracticeCode\": \"N\",\r\n                  
 \"organicPracticeTypeCode\": \"N\",\r\n                  
 \"croppingPracticeCode\": 997,\r\n                  \"producerShare\": [\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 4,\r\n                      
 \"producerSharePercent\": 0.5\r\n                    },\r\n                    
 {\r\n                      \"fileCustomerIdentifier\": 5,\r\n                      
 \"producerSharePercent\": 0.5\r\n                    }\r\n    …"

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 20 апреля 2020

Если ваши вложенные ключи массива совпадают, вы можете сделать это рекурсивно:

type NestedData = { nested: NestedData[] }[]

function flatten(nestedData: NestedData) {
  let flattened = [];

  for (const { nested, ...restData } of nestedData) {
    flattened.push(restData);
    if (!nested || !nested.length) continue;
    flattened = flattened.concat(flatten(nested))
  }

  return flattened;
}  

const flattened = flatten(yourData);

Вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...