Lodash group by on object of array

Viewed 44
var result =[
{
    "Id": 1,
    "PRODUCT_CD": [34,45],
    "EFFECTIVE_DATE": "2022-01-09"
},
{
    "Id": 2,
    "PRODUCT_CD": [34,45],
    "EFFECTIVE_DATE": "2022-01-10"
}]  

Expected Result:

      var expectedResult = [
                       {
                          "34": {
                                   "Id": 2,
                                   "PRODUCT_CD": 34,
                                   "EFFECTIVE_DATE": "2022-01-10"
                                 },
                           "45": {
                                   "Id": 2,
                                   "PRODUCT_CD": 45,
                                   "EFFECTIVE_DATE": "2022-01-10"
                         }
                      }
                    ]

It should be order by EFFECTIVE_DATE descending and returns the latest record using Lodash.

I tried this way but did not get the desired result:

let data = _.chain(result.data)
             .filter((r) => !!r.PRODUCT_CD?.length)
             .orderBy((r) => r.EFFECTIVE_DATE, "desc")
             .groupBy((r) => r.PRODUCT_CD)
             .mapKeys((d, key) => key)
             .mapValues((d, key) => { return d;}).value();      

0 Answers
Related