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

Sha*_*awn 6 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 = 
Run Code Online (Sandbox Code Playgroud)

我想var2包含这样的东西.

  [
    { prop1:'A', prop3:"descr1" },
    { prop1:'B', prop3:"descr2" },
    { prop1:'C', prop3:"descr3" },
  ];
Run Code Online (Sandbox Code Playgroud)

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

Paa*_*rth 14

这似乎是一个很好的使用时间 .map()

var var1 = class2.get();
var var2 = var1.map(obj => ({prop1: obj.prop1, prop3: obj.prop3}));
Run Code Online (Sandbox Code Playgroud)

简短,甜蜜,做你想要的.

.map()的MDN文档

  • 甚至更短:D`var1.map(({prop1,prop2})=>({prop1,prop2}));` (3认同)

Ikh*_*yor 5

您可以像这样删除对象属性

    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);
Run Code Online (Sandbox Code Playgroud)

  • 那不是你会使用`filter`的地方。您将使用过滤器来删除或保留数组中的 _items,而不是属性。`delete`,在这里,会产生副作用。这个答案是以完全没有语义的方式使用 `filter` 作为通用迭代方法。 (5认同)