There are three flags xstatus, ystatus and zstatus which determines whether the object with the properties name.is_xstatus, name.is_ystatus and name.is_zstatus should be present in the array or not.
//All flags are true
var xstatus = true;
var ystatus = true;
var zstatus = true;
var myArray = [
{field: 'id', name:'is_xstatus', operator: 'eq', value: 'id'},
{field: 'cStatus', name:'is_ystatus', operator: 'eq', value: 'cStatus'},
{field: 'money', name:'is_zstatus', operator: 'eq', value: 'money'},
{field: 'coverage', name:'is_coverage', operator: 'eq', value: 'coverage'},
{field: 'nam', name:'is_nam', operator: 'eq', value: 'nam'}
];
var xstatus = true;
var ystatus = true;
var zstatus = true;
var myArray = [
{field: 'id', name:'is_xstatus', operator: 'eq', value: 'id'},
{field: 'cStatus', name:'is_ystatus', operator: 'eq', value: 'cStatus'},
{field: 'money', name:'is_zstatus', operator: 'eq', value: 'money'},
{field: 'coverage', name:'is_coverage', operator: 'eq', value: 'coverage'},
{field: 'nam', name:'is_nam', operator: 'eq', value: 'nam'}
];
myArray = myArray.filter(( obj ) =>(!zstatus && obj.name !== 'is_zstatus')).filter((obj) => (!ystatus && obj.name !== 'is_ystatus'))
console.log(myArray);
I tried the above with the filter method. When the filter conditions don’t meet, it returns empty []. But what I need is if conditions aren’t met, return the Array with out removing any object
var xstatus = true;
var ystatus = true;
var zstatus = false;
var myArray = [
{field: 'id', name:'is_xstatus', operator: 'eq', value: 'id'},
{field: 'cStatus', name:'is_ystatus', operator: 'eq', value: 'cStatus'},
{field: 'money', name:'is_zstatus', operator: 'eq', value: 'money'},
{field: 'coverage', name:'is_coverage', operator: 'eq', value: 'coverage'},
{field: 'nam', name:'is_nam', operator: 'eq', value: 'nam'}
];
myArray.forEach((obj, index) => {
if(!zstatus && obj.name == 'is_zstatus') {
delete myArray[index];
}
return myArray;
});
console.log(myArray);