How to remove properties from an object array?

I am trying to remove a property from an object array.

export class class1 {
  prop1: string;
  prop2: string;
  prop3: string;
}
export class class2 {
  myprop = [
    { prop1:'A', prop2:"1", prop3:"descr1" },
    { prop1:'B', prop2:"2", prop3:"descr2" },
    { prop1:'C', prop2:"3", prop3:"descr3" },
  ];
  get(): class1[] {
    return this.myprop ;
  }
  add(value: class1): void {
    this.myprop.push(value);
  }
}
var var1 = class2.get();
var var2 = 

I would like var2 contain something like this.

  [
    { prop1:'A', prop3:"descr1" },
    { prop1:'B', prop3:"descr2" },
    { prop1:'C', prop3:"descr3" },
  ];

Is there a way to convert/cast var1 into the above? In other words, I would like to remove prop2 from var1 object array and assign it to var2. How can I do that?

Answers:

Answer

You can delete object property like this e.g.

    var myprop = [
        {prop1: 'A', prop2: "1", prop3: "descr1"},
        {prop1: 'B', prop2: "2", prop3: "descr2"},
        {prop1: 'C', prop2: "3", prop3: "descr3"},
    ];

    myprop = myprop.filter(function (props) {
        delete props.prop2;
        return true;
    });
    console.log(myprop);
Answer

This seems like a great time to use .map()

var var1 = class2.get();
var var2 = var1.map(obj => ({prop1: obj.prop1, prop3: obj.prop3}));

Short, sweet, and does what you want.

MDN docs for .map()

Answer

Casting in TypeScript won't remove the property but only hide it in your IDE because it will be compile to JavaScript for runtime.

First of all, if you don't want to remove prop2 from var1 while deleting the property from var2 you need to clone it. For that you will need this JavaScript function:

function cloneObject(obj) {
    if (obj === null || typeof obj !== 'object') {
        return obj;
    }

    var temp = obj.constructor(); // give temp the original obj's constructor
    for (var key in obj) {
        temp[key] = cloneObject(obj[key]);
    }

    return temp;
}

Use the clone function to clone var1 and loop each object in var2 to remove property prop2. You can do so with JavaScript by combining array.forEach and delete:

var var2 = cloneObject(var1);
var2.forEach((obj) => { delete obj.prop2; });

Doing so will KEEP prop2 in var1 but REMOVE it from var2

Answer

// Use delete:

    var user = {
      firstname:"Jack",
      lastname:"Prince",
    };

    var result = delete user.firstname;
    console.log(result,"firstname deleted");
    console.log(user);
    
    
    
  //using Object rest spread operator 

   const { firstname, ...data } = user;
   console.log(data);
  

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.