Question:
How can I removal all emailAddress that are empty, and if there are no emailAddresses for an approval, remove that approval too.
My current solution will remove approvals when emailAddress completely empty. But not when two emailAddresses are present and one is empty (see script output vs. expected output)
var request = {
approvals: [
{
type: 'media',
emailAddresses: [
{emailAddress: '[email protected]'},
]
},
{
type: 'other',
emailAddresses: [
{emailAddress: ''},
]
},
{
type: 'scope',
emailAddresses: [
{emailAddress: '[email protected]'},
{emailAddress: ''},
]
}
]
}
const filterOutEmptyEmails = (approval) => {
if(approval.emailAddresses.filter(x => !!x.emailAddress).length){
return true;
}
}
let output = request.approvals.filter(filterOutEmptyEmails);
console.log(JSON.stringify(output));
// EXPECTED OUTPUT:
// approval: [
// {
// type: 'media',
// emailAddresses: [
// {emailAddress: '[email protected]'},
// ]
// },
// {
// type: 'scope',
// emailAddresses: [
// {emailAddress: '[email protected]'},
// ]
// }
// ]
// }]
if(approval.emailAddresses.filter(x => !!x.emailAddress).length). You've told it to include the wholeemailAddressarray as long as it contains at least one non-empty email address. So I don't think you need to filterrequest.approvals, but rather loop over it and filter theemailAddressarray for each one.