this is my data
let a = [
{
"activityCode": "23",
"isValid": null
},
{
"activityCode": "28",
"isValid": null
},
{
"activityCode": "32",
"isValid": null
}
]
let b = [
{
"activityCode": "23",
"allocated": 3
},
{
"activityCode": "32",
"allocated": 2
}
]
i want to change "isValid" to true if activityCode(a) in array has the same activityCode(b) & "isValid" to false if activityCode(a) in array has not the same activityCode(b), and the output i need like this:
let a = [
{
"activityCode": "23",
"isValid": true
},
{
"activityCode": "28",
"isValid": false
},
{
"activityCode": "32",
"isValid": true
}
]
Please help me. thanks guys.
a.map(aa => {
const match = b.find(bb => bb.activityCode === aa.activityCode);
return { activityCode: aa.activityCode, isValid: match !== undefined };
})
Try this :
a.forEach(element => {
element.isValid = b.some(e => e.activityCode === element.activityCode);
});
console.log(a);
You can use Array.map() and Array.some() to get the desired result. If any element from a is present in array b Array.some() will return true.
let a = [ { "activityCode": "23", "isValid": null }, { "activityCode": "28", "isValid": null }, { "activityCode": "32", "isValid": null } ]
let b = [ { "activityCode": "23", "allocated": 3 }, { "activityCode": "32", "allocated": 2 } ]
const result = a.map(({ activityCode }) => ({ activityCode, isValid: b.some(el => el.activityCode === activityCode ) }));
console.log('Result:', result)
.as-console-wrapper { max-height: 100% !important; top: 0; }