【问题标题】:Remove objects from array in typescript从打字稿中的数组中删除对象
【发布时间】:2018-08-20 10:56:52
【问题描述】:

如何从 typescript 中的数组中删除对象?

"revenues":[
{
        "drug_id":"20",
        "quantity":10
},
{
        "drug_id":"30",
        "quantity":1    
}]

所以我想从所有对象中删除 drug_id。 我如何做到这一点? 谢谢!

【问题讨论】:

标签: angular typescript angular2-template


【解决方案1】:

你可以使用它:

this.revenues = this.revenues.map(r => ({quantity: r.quantity}));

对于这样做的更通用的方式:

removePropertiesFromRevenues(...props: string[]) {
  this.revenues = this.revenues.map(r => {
    const obj = {};
    for (let prop in r) { if (!props.includes(prop) { obj[prop] = r[prop]; } }
    return obj;
  });
}

【讨论】:

  • this.revenues = this.revenues.map(r => ({quantity: r.quantity}));它会删除数量字段吗?谢谢
  • 不,它会删除 id,就像你问的那样
【解决方案2】:

您可以像这样使用Array.prototype.map

revenues = this.revenues.map(r => ({quantity: r.quantity}));

Array.prototype.map 将获取 revenues 数组中的每一项,您可以在返回之前对其进行转换。

map() 方法使用调用的结果创建一个新数组 在调用数组中的每个元素上提供函数。

因此,例如,如果您想将每个数量加倍并添加或重命名某些字段,您可以执行以下操作:

revenues = this.revenues.map(r => ({quantity: r.quantity, quantity2: r.quantity * 2}));

【讨论】:

  • 这实际上会做什么?你能向我解释一下吗?提前谢谢!
  • Array.prototype.map 将根据回调返回的给定转换规则将您的数组转换为新数组。在这种情况下,通过隐式返回,我们的回调返回一个仅包含此字段的新对象{quantity: r.quantity}
  • 假设我有 "revenues":[ { "drug_id":"20", "quantity":10,, "price":10 }, { "drug_id":"30", " quantity":1 , "price":10 }] 所以我只想返回 drug_id 和数量,你的选项会这样做吗?
  • 所以你需要写revenues = revenues.map(item => { drug_id: item.drug_id, quantity : item.quantity })。我将编辑我的答案,为您提供有关 map 工作原理的更多说明
  • 不客气,所以不要忘记为您的问题投票并标记正确的解决方案!
【解决方案3】:

这应该可以工作

revenues.forEach((object) => delete object.drug_id );

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2017-10-27
    • 2021-09-01
    • 2021-11-02
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多