Panda
Panda

Reputation: 415

How to filter the data on array and remove some data in angular

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

Answers (3)

Kaustubh Khare
Kaustubh Khare

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

Vaibhav
Vaibhav

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

Jins Thomas Shaji
Jins Thomas Shaji

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

Related Questions