0

want to remove some fields from a complex object.

var obj1={title:"T1",name="name1",classes:[
{id:1,scheme:1,cName:"Cls1"},
{id:2,scheme:2,cName:"Cls2"},
{id:3,scheme:3,cName:"Cls3"},]}

I want to remove 'scheme' & 'cName' from classes for every class

vishal M
  • 71
  • 5

3 Answers3

3

You can use map() on obj.classes and destrcuture the properties to be removed and return the other properties.

Note: The below method will modify original object.

var obj1={title:"T1",name:"name1",classes:[ {id:1,scheme:1,cName:"Cls1"}, {id:2,scheme:2,cName:"Cls2"}, {id:3,scheme:3,cName:"Cls3"}]}

obj1.classes = obj1.classes.map(({cName,scheme,...rest}) => rest);
console.log(obj1);

If there are only three properties scheme, id and cName and you want to remove two of them. Then its better to return the remain property from map()

var obj1={title:"T1",name:"name1",classes:[ {id:1,scheme:1,cName:"Cls1"}, {id:2,scheme:2,cName:"Cls2"}, {id:3,scheme:3,cName:"Cls3"}]}

obj1.classes = obj1.classes.map(({id}) => ({id}));
console.log(obj1);
Maheer Ali
  • 35,834
  • 5
  • 42
  • 73
1

Use map() with your classes property. map() will return new array according to the property you want to get.

If you want to an id collection, just do the following code:

var obj1={
  title:"T1",
  name: "name1",
  classes: [
    {id: 1, scheme: 1, cName: "Cls1"},
    {id:2, scheme: 2, cName: "Cls2"},
    {id:3, scheme: 3, cName: "Cls3"}
   ]
}

obj1.classes = obj1.classes.map((item) => item.id);

console.log(obj1)
Radonirina Maminiaina
  • 6,958
  • 4
  • 33
  • 60
0

You can do it like,

let obj1={title:"T1",
          name:"name1",
          classes:[{id:1,scheme:1,cName:"Cls1"},
                   {id:2,scheme:2,cName:"Cls2"},
                   {id:3,scheme:3,cName:"Cls3"}]};

obj1.classes.forEach((el) => { delete el.scheme;
                                delete el.cName;});
                                
console.log(obj1);
Manish Khedekar
  • 392
  • 3
  • 13