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();