如何从对象数组中删除属性?

时间:2016-05-14 05:20:19

标签: javascript typescript

我正在尝试从对象数组中删除属性。

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 = 

我希望var2包含这样的内容。

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

有没有办法将var1转换/投射到上面?换句话说,我想从prop2对象数组中删除var1并将其分配给var2。我怎么能这样做?

4 个答案:

答案 0 :(得分:12)

这似乎是使用.map()

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

简短,甜蜜,做你想做的事。

MDN docs for .map()

答案 1 :(得分:2)

您可以删除此类对象属性,例如

    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);

答案 2 :(得分:1)

在TypeScript中进行强制转换不会删除该属性,只会将其隐藏在IDE中,因为它将在运行时编译为JavaScript。

首先,如果您不想从prop2删除var1而从var2删除该属性,则需要克隆它。为此,您将需要此JavaScript函数:

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;
}

使用克隆功能克隆var1并循环var2中的每个对象以删除属性prop2。您可以通过组合array.forEach和delete:

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

这样做会在prop2中保留var1,但请从var2

中删除$con=mysqli_connect("host","user","password") or die(mysqli_error()); mysqli_select_db($con,"yourdatabasename");

答案 3 :(得分:0)

// 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);