Santhosh
Santhosh

Reputation: 1079

How to Remove Elements from Array of Objects based on some condition

I am facing a critical problem in angular

I have the following arrays

dataArray (3) [21, 21, 23]

and the below is actual Data from API

ViewData = [  
      {  
         "id":5,
         "name":"Private",
         "description":"",

      },
      {  
         "id":7,
         "name":"Semi Private",
         "description":"",

      },
      {  
         "id":8,
         "name":"laboratory",
         "description":"",

      },
      {  
         "id":15,
         "name":"Test",

      },
      {  
         "id":16,
         "name":"Testss",
         "description":null,

      },
      {  
         "id":18,
         "name":"TestSan",
         "description":null,

      },
      {  
         "id":21,
         "name":"TestBBB",
         "description":"test",

      },
      {  
         "id":23,
         "name":"TestOne",
         "description":null,

      },
      {  
         "id":2,
         "name":"Standard ward",
         "description":"",
         "sharing":4,
         "set_value":2
      }
   ]

I have to process ViewData (2nd array) after processing ViewData should not contain JSON Objects which ids are present in dataArray(I mean if the any id of ViewData is equal to id which is in DataArray i want to remove that JSON Object from View Data) (Out put should be like below )

ViewData = [  
      {  
         "id":5,
         "name":"Private",
         "description":"",

      },
      {  
         "id":7,
         "name":"Semi Private",
         "description":"",

      },
      {  
         "id":8,
         "name":"laboratory",
         "description":"",

      },
      {  
         "id":15,
         "name":"Test",

      },
      {  
         "id":16,
         "name":"Testss",
         "description":null,

      },
      {  
         "id":18,
         "name":"TestSan",
         "description":null,

      },

      {  
         "id":2,
         "name":"Standard ward",
         "description":"",
         "sharing":4,
         "set_value":2
      }
   ]

Upvotes: 2

Views: 7290

Answers (4)

Pranay Rana
Pranay Rana

Reputation: 176896

you can make use of filter() and includes() method for this

const arryids = {1,3,9};//remove id array 
const filteredarray = this.ViewData.filter(d=> !array.includes(d.id));
this.ViewData= filteredarray;

Upvotes: 4

Vaibhav Shettar
Vaibhav Shettar

Reputation: 810

if(condition){
var key = "your_key";
delete json[key];
}

Upvotes: -1

Suren Srapyan
Suren Srapyan

Reputation: 68635

Using filter with combination includes. filter will return a new array based on the condition. Those items for which the condition returns true, will be added in the output array.

const ids = [21, 23];
const viewData = [  
      {  
         "id":5,
         "name":"Private",
         "description":"",

      },
      {  
         "id":7,
         "name":"Semi Private",
         "description":"",

      },
      {  
         "id":8,
         "name":"laboratory",
         "description":"",

      },
      {  
         "id":15,
         "name":"Test",

      },
      {  
         "id":16,
         "name":"Testss",
         "description":null,

      },
      {  
         "id":18,
         "name":"TestSan",
         "description":null,

      },
      {  
         "id":21,
         "name":"TestBBB",
         "description":"test",

      },
      {  
         "id":23,
         "name":"TestOne",
         "description":null,

      },
      {  
         "id":2,
         "name":"Standard ward",
         "description":"",
         "sharing":4,
         "set_value":2
      }
   ];
   
const filteredData = viewData.filter(item => !ids.includes(item.id));

console.log(filteredData);

Upvotes: 0

gurvinder372
gurvinder372

Reputation: 68393

Use filter

ViewData = ViewData.filter( s => !dataArray.includes( s.id ) ) 

Upvotes: 2

Related Questions