I have 2 arrays. I need to change the key-value pair of the Objects in originalArray based on the objects from compareArray
let originalArray = [
{
reportCatalogId: 111,
catalogRootId: 11,
reports: [
{
reportId: 90001,
reportCatalogId: 111,
provisioning: true
},
{
reportId: 90002,
reportCatalogId: 111,
provisioning: true
},
{
reportId: 90003,
reportCatalogId: 111,
provisioning: true
}
]
},
{
reportCatalogId: 112,
catalogRootId: 11,
reports: [
{
reportId: 90004,
reportCatalogId: 112,
provisioning: true
},
{
reportId: 90005,
reportCatalogId: 112,
provisioning: true
},
{
reportId: 90006,
reportCatalogId: 112,
provisioning: true
},
{
reportId: 90007,
reportCatalogId: 112,
provisioning: true
}
]
}
];
let compareArray = [
{
"reportId": 90001,
"reportCatalogId": 111,
"provisioning": true
},
{
"reportId": 90006,
"reportCatalogId": 112,
"provisioning": true
},
{
"reportId": 90007,
"reportCatalogId": 112,
"provisioning": true
},
{
"reportId": 90003,
"reportCatalogId": 111,
"provisioning": true
}
]
I need to check if the object from compareArray is present in originalArray based on the reportId. If it is not present, then the respective object's key provisioningvalue should be changed into false.
Desired Output :
let output = [
{
reportCatalogId: 111,
catalogRootId: 11,
reports: [
{
reportId: 90001,
reportCatalogId: 111,
provisioning: true
},
{
reportId: 90002,
reportCatalogId: 111,
provisioning: false
},
{
reportId: 90003,
reportCatalogId: 111,
provisioning: true
}
]
},
{
reportCatalogId: 112,
catalogRootId: 11,
reports: [
{
reportId: 90004,
reportCatalogId: 112,
provisioning: false
},
{
reportId: 90005,
reportCatalogId: 112,
provisioning: false
},
{
reportId: 90006,
reportCatalogId: 112,
provisioning: true
},
{
reportId: 90007,
reportCatalogId: 112,
provisioning: true
}
]
}
];
What I tried so far is that
const newArray = originalArray.map((catalog) => catalog.reports.map((report) => {
if (report.reportId !== compArray.map(id => id.reportId)) {
return {...report, provisioning : false}
}
}))
But I could not produce the desired output with my above code. Glad if someone could show me a pointer.