Search code examples
jsonangular5lodash

How to compare rows from JSON file in angular?


I have this items in a JSON file that I need to compare wherever I have Curr or Prev values and compare if they are equals. this algorithm is with angular 5 but I'm being unable to do this, I did the load function with httpClient Example :

[{
    "id": 1,
    "comparisonDate": "2017-06-22",
    "milestone": "CURR_PREV",
    "udDomain": "BASIS",
    "udIdentifier": "332A251000.01",
    "rpt": "D70",
    "approvedCurr": true,
    "approvedPrev": null,
    "commercialReferenceCurr": "BASIS - 01.01.2007",
    "commercialReferencePrev": null,
    "customizationImpactCurr": null,
    "customizationImpactPrev": null,
    "deliveryTypeCurr": null,
    "deliveryTypePrev": null,
    "aircraftId": 184,
    "aircraftSapId": "580652",
    "aircraftName": "BUL 011",
    "aircraftSerialNumber": "02713",
    "quantityCurr": "1",
    "quantityPrev": null,
    "statusCurr": "O",
    "statusPrev": null,
    "typeModification": "CREATION",
    "validityCurr": "V",
    "validityPrev": null
}, {
    "id": 2,
    "comparisonDate": "2017-06-22",
    "milestone": "CURR_PREV",
    "udDomain": "BASIS",
    "udIdentifier": "332A270028.01",
    "rpt": "E15",
    "approvedCurr": true,
    "approvedPrev": null,
    "commercialReferenceCurr": "BASIS - 01.01.2007",
    "commercialReferencePrev": null,
    "customizationImpactCurr": null,
    "customizationImpactPrev": null,
    "deliveryTypeCurr": null,
    "deliveryTypePrev": null,
    "aircraftId": 184,
    "aircraftSapId": "580652",
    "aircraftName": "BUL 011",
    "aircraftSerialNumber": "02713",
    "quantityCurr": "1",
    "quantityPrev": null,
    "statusCurr": "O",
    "statusPrev": null,
    "typeModification": "CREATION",
    "validityCurr": "V",
    "validityPrev": null
}]

this should be with using lodash.


Solution

  • i assume your want something like this

    • for each object in your array
    • filter keys that end with "Curr"
    • for each get Prev property
    • compare it with curr property

      let obj = [{
      "id": 1,
      "comparisonDate": "2017-06-22",
      "milestone": "CURR_PREV",
      "udDomain": "BASIS",
      "udIdentifier": "332A251000.01",
      "rpt": "D70",
      "approvedCurr": true,
      "approvedPrev": null,
      "commercialReferenceCurr": "BASIS - 01.01.2007",
      "commercialReferencePrev": null,
      "customizationImpactCurr": null,
      "customizationImpactPrev": null,
      "deliveryTypeCurr": null,
      "deliveryTypePrev": null,
      "aircraftId": 184,
      "aircraftSapId": "580652",
      "aircraftName": "BUL 011",
      "aircraftSerialNumber": "02713",
      "quantityCurr": "1",
      "quantityPrev": null,
      "statusCurr": "O",
      "statusPrev": null,
      "typeModification": "CREATION",
      "validityCurr": "V",
      "validityPrev": null
      }, {
      "id": 2,
      "comparisonDate": "2017-06-22",
      "milestone": "CURR_PREV",
      "udDomain": "BASIS",
      "udIdentifier": "332A270028.01",
      "rpt": "E15",
      "approvedCurr": true,
      "approvedPrev": null,
      "commercialReferenceCurr": "BASIS - 01.01.2007",
      "commercialReferencePrev": null,
      "customizationImpactCurr": null,
      "customizationImpactPrev": null,
      "deliveryTypeCurr": null,
      "deliveryTypePrev": null,
      "aircraftId": 184,
      "aircraftSapId": "580652",
      "aircraftName": "BUL 011",
      "aircraftSerialNumber": "02713",
      "quantityCurr": "1",
      "quantityPrev": null,
      "statusCurr": "O",
      "statusPrev": null,
      "typeModification": "CREATION",
      "validityCurr": "V",
      "validityPrev": null
       }];
      
      
      obj.forEach(x=>{
        Object.keys(x)
         .filter(y=>y.endsWith("Curr"))
         .forEach(y=>{
           let prevProp = y.replace("Curr", "Prev")
           console.log(y, x[y]);
           console.log(prevProp ,x[prevProp ]);
           if(x[y]===x[prevProp ]){
             //equal
           }else{
             //not equal
           }
       })
      
      })
      

    you could use lodash's _.forEach, _.Keys, _.filter but i think there is not much point on this.