当前位置: 首页 > 知识库问答 >
问题:

如何从对象数组中删除属性?[副本]

习宸
2023-03-14

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

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" },
  ];

是否有方法将/castvar1转换为上述内容?换句话说,我想从var1对象数组中删除prop2,并将其分配给var2。我该怎么做?

共有3个答案

晋承运
2023-03-14

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

首先,如果在从var2删除属性时不想从var1中删除prop2,则需要克隆它。为此,您需要此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;
}

使用clone函数克隆var1并循环var2中的每个对象以删除属性prop2。您可以使用JavaScript合并array.for并删除:

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

这样做将在var1中保留prop2,但将其从var2中删除

唐经国
2023-03-14

你可以像这样删除对象属性。

    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);
袁成化
2023-03-14

这似乎是使用的好时机。map()

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

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

MDN文档。地图()

 类似资料:
  • 我有一个具有和属性的对象数组: 我想从所有对象中删除属性,并在控制台中打印,如

  • 问题内容: 如何通过匹配对象属性从数组中删除对象? 请只使用本机JavaScript。 我在使用接头时遇到麻烦,因为每次删除的长度都会减少。使用克隆并在原始索引上进行拼接仍然会给您带来长度减少的问题。 问题答案: 我以为你用过这样的东西? 修复bug所需要做的就是在下一次减少,然后(也可以选择向后循环): 为了避免线性时间删除,可以编写要 保留 在数组上的数组元素: 为了避免在现代运行时中进行线性

  • } 现在,我的要求是当我单击“删除列”时,它会进入此方法,并且我想删除与之关联的特定列和行。 提前谢谢你的帮助。

  • 我正在使用javascript定义对象数组,并希望根据对象属性删除值。 我用了下面的代码: 预期结果:当我删除值时,它应该给我一个包含0个元素的数组。 实际输出:当我删除值时,我得到的数组有1个元素,元素值为null。

  • 问题内容: 说我创建一个对象,如下所示: 删除该属性以使其最终成为new 的最佳方法是什么? 问题答案: 像这样: 演示版

  • 问题内容: 我有一个要在Python中清理的JSON数组。我要删除该属性: data.json 我正在设置列表理解以删除该属性,但是我不确定如何创建关注以下内容的变量: 当我理解列表时,它返回一个空数组。我必须纠正什么才能使其正常工作? 问题答案: 解决您的问题的一种简单方法是使用以下方法删除不需要的密钥: 您应该添加一些安全检查,但是您知道了。