Reputation: 415
const data = [
{
status: "ESCALTED",
name: "A1",
ack: true
},
{
status: "ESCALTED",
name: "A2",
ack: true
},
{
status: "CLOSED",
name: "A3",
ack: true
},
{
status: "NEW",
name: "A4",
ack: false
},
{
status: "NEW",
name: "A5",
ack: true
}
];
What I'm trying to filter all the objects with ack
property equal to true
and if the status
is CLOSED
or ESCALATED
, it should be removed.
The output should be like this:
[{
status: "NEW",
name: "A5",
ack: true
}]
Upvotes: 1
Views: 673
Reputation: 3510
You can filter it like,
For Angular and Angularjs with typescript,
data = data.filter(ele => ele.ack === true && status !== 'CLOSED' && status !== 'ESCALATED'));
Angularjs with javascript,
Add $filter
dependency into your controller and use it like below,
data = $filter('filter')(data, {ack === 'true' && status !== 'CLOSED' && status !== 'ESCALATED'});
Upvotes: 1
Reputation: 1473
You can use ES6 filter()
method applying following condition filter(item => (item.ack && !["ESCALTED", "CLOSED"].includes(item.status))
console.log(filteredData)
const data = [{
status: "ESCALTED",
name: "A1",
ack: true
},
{
status: "ESCALTED",
name: "A2",
ack: true
},
{
status: "CLOSED",
name: "A3",
ack: true
},
{
status: "NEW",
name: "A4",
ack: false
},
{
status: "NEW",
name: "A5",
ack: true
}
];
const filteredData = data.filter(item => (item.ack && !["ESCALTED", "CLOSED"].includes(item.status)));
console.log(filteredData)
Upvotes: 1
Reputation: 877
You will get the required output by filtering your array.
Try the below code:
const data = [
{
status: "ESCALTED",
name: "A1",
ack: true
},
{
status: "ESCALTED",
name: "A2",
ack: true
},
{
status: "CLOSED",
name: "A3",
ack: true
},
{
status: "NEW",
name: "A4",
ack: false
},
{
status: "NEW",
name: "A5",
ack: true
}
];
const output = data.filter(obj => obj.ack && obj.status != 'CLOSED' && obj.status != 'ESCALTED')
console.log(output)
Upvotes: 2