Search code examples
angulartypescriptag-gridag-grid-angular

Typescript Get certain values from an array of classes


I have an array of objects that look like this

[
 {
  applicationNumber:'227114'
  applicationStatus:0,
  dateCreated: "01-10-2010"
 },
{
   companyInformationModel:
 {
  companyInformationId: '78fe1852-5a26-4624-925c-74653de9dad9',
  companyName: 'Company Test',
  contactName: 'Test Contact',
  primaryPhone: '123-234-2343',
  secondaryPhone: null
 },
 {
   locationInformationModels:
   [
     {
       "Address": "123 Main St",
       "City": "My City"
     },
     {
       "Address": "123 Not Main St",
       "City": "Your City"
     }
   ]
]

I want to grab only these fields and assign them to its own array (application nummber, applicationstatus, companyname, contactname, Address, City)

What is the most efficient way that can I do that in typescript? I want to assign this data to an ag-grid datasource.

onGridReady(params: GridReadyEvent) {
    this.gridApi = params.api;
    this.gridColumnApi = params.columnApi;
    this.assessmentService.getAssessment().subscribe(data =>{
      let assessment =   <-------------------------Here is where I would parse the data
      this.assessmentData = assessment;
      const sortModel = [{colId: 'dateCreated', sort: 'desc'}];
      this.sortGrid(params, 'dateCreated', 'desc')
      this.gridApi.setRowData(this.assessmentData.slice(0, 10)); 
      params.api!.setRowData(this.assessmentData.slice(0, 10))
      this.loading = false; 
      console.log(this.assessmentData);
    });  
  }

Solution

  •   const data = [
        {
          applicationNumber: '227114',
          applicationStatus: 0,
          dateCreated: "01-10-2010"
        },
        {
          companyInformationModel:
          {
            companyInformationId: '78fe1852-5a26-4624-925c-74653de9dad9',
            companyName: 'Company Test',
            contactName: 'Test Contact',
            primaryPhone: '123-234-2343',
            secondaryPhone: null
          },
          locationInformationModels:
          [
            {
              "Address": "123 Main St",
              "City": "My City"
            },
            {
              "Address": "123 Not Main St",
              "City": "Your City"
            }
          ]
        }
      ];
    
    
    onGridReady(params: GridReadyEvent) {
          this.gridApi = params.api;
          this.gridColumnApi = params.columnApi;
          this.assessmentService.getAssessment().subscribe(data => {
            const assessment = data.map(item => ({
              applicationNumber: item.applicationNumber,
              applicationStatus: item.applicationStatus,
              companyName: item.companyInformationModel?.companyName,
              contactName: item.companyInformationModel?.contactName,
              Address: item.locationInformationModels?.[0]?.Address,
              City: item.locationInformationModels?.[0]?.City,
            }));
        
            this.assessmentData = assessment;
            const sortModel = [{ colId: 'dateCreated', sort: 'desc' }];
            this.sortGrid(params, 'dateCreated', 'desc');
            this.gridApi.setRowData(this.assessmentData.slice(0, 10));
            params.api!.setRowData(this.assessmentData.slice(0, 10));
            this.loading = false;
            console.log(this.assessmentData);
          });
        }