1

The following is my array,

[
  {
    "key_id": "#K000030",
    "_id": "K000030",
    "isMaster": true,
    "specialties": [
        {
            "speciality1_count": "x039",
            "speciality1": "Infectious Disease"
        }
    ]
},
{
    "key_id": "#K000442",
    "_id": "K000442",
    "keyword": "Artificial Heart Ventricle",
    "isMaster": true,
    "specialties": [
        {
            "speciality1_count": "x011",
            "speciality1": "Cardiothoracic Surgery"
        },
        {
            "speciality2_count": "x041",
            "speciality2": "Interventional Cardiology"
        }
    ]
}

This fields are coming from mongoDb and I declared each filed in model. Here I want to delete 'isMater' and '_id' in my array.

resp.forEach(function(v,k){
    if (v) {
      delete v.isMaster;
      delete v._id;
    }
});

But its not getting deleted.I am not sure where I made a mistake. Please help.

Neil Lunn
  • 148,042
  • 36
  • 346
  • 317
Testimg198
  • 55
  • 1
  • 2
  • 8

3 Answers3

1

Use array.map() function of JavaScript to do this.

So code will be:

array.map(function(item) {
  delete item._id;
  delete item.isMaster;
  return item;
});

Below is complete working code:

let array = [{"key_id":"#K000030","_id":"K000030","isMaster":true,"specialties":[{"speciality1_count":"x039","speciality1":"Infectious Disease"}]},{"key_id":"#K000442","_id":"K000442","keyword":"Artificial Heart Ventricle","isMaster":true,"specialties":[{"speciality1_count":"x011","speciality1":"Cardiothoracic Surgery"},{"speciality2_count":"x041","speciality2":"Interventional Cardiology"}]}];

array.map(function(item) {
  delete item._id;
  delete item.isMaster;
  return item;
});

console.log(array);
Vikasdeep Singh
  • 20,983
  • 15
  • 78
  • 104
1

Shortest way to do this I think.

data = data.map(({_id,isMaster,...val})=>val);

var data  =[
  {
    "key_id": "#K000030",
    "_id": "K000030",
    "isMaster": true,
    "specialties": [
        {
            "speciality1_count": "x039",
            "speciality1": "Infectious Disease"
        }
    ]
},
{
    "key_id": "#K000442",
    "_id": "K000442",
    "keyword": "Artificial Heart Ventricle",
    "isMaster": true,
    "specialties": [
        {
            "speciality1_count": "x011",
            "speciality1": "Cardiothoracic Surgery"
        },
        {
            "speciality2_count": "x041",
            "speciality2": "Interventional Cardiology"
        }
    ]
}];

data = data.map(({_id,isMaster,...val})=>val);

console.log(data);
Nishant Dixit
  • 5,388
  • 5
  • 17
  • 29
0

Try delete the element using key delete map['keyName']; to delete from you object. Like following :

let resp = [{
    "key_id": "#K000030",
    "_id": "K000030",
    "isMaster": true,
    "specialties": [{
      "speciality1_count": "x039",
      "speciality1": "Infectious Disease"
    }]
  },
  {
    "key_id": "#K000442",
    "_id": "K000442",
    "keyword": "Artificial Heart Ventricle",
    "isMaster": true,
    "specialties": [{
        "speciality1_count": "x011",
        "speciality1": "Cardiothoracic Surgery"
      },
      {
        "speciality2_count": "x041",
        "speciality2": "Interventional Cardiology"
      }
    ]
  }
];

resp.forEach(function(v,k){
   if(v){
      delete v['isMaster'];
      delete v['_id'];
   }
});

console.log(resp)

Note: In some JavaScript engine, the delete keyword might hurt performance as it will undo compile / JIT optimization.

Sudhir Ojha
  • 3,247
  • 3
  • 14
  • 24