如何通过标题按数组删除对象来解决此问题?

时间:2019-03-19 10:42:53

标签: angular typescript

在这种情况下,我试图按标题从数组中删除对象,但它对我不起作用。另外,addItem正常工作

addItem() {
    console.log(this.item.title + ' ' + this.item.quantity);
    this.ListOfUsedMaterials.push({ title: this.item.title, quantity: this.item.quantity});
    this.item.title = "";
    this.item.quantity = ""; 
}


//delete from array by title
deleteItem() {
    console.log("ID ARTIKLA: ", this.item.title);

    for (var i=0; i < this.ListOfUsedMaterials.length; i++) {
      if (this.ListOfUsedMaterials[i]["title"] == this.item.title) {
        this.ListOfUsedMaterials.splice(i, 1);
      }
    }

}

2 个答案:

答案 0 :(得分:2)

只需使用过滤器:

deleteItemfromArray(title = this.item.title) {
  this.ListOfUsedMaterials = this.ListOfUsedMaterials
    .filter(item => item.title != title);
}

答案 1 :(得分:0)

您可以尝试这样。我们需要从头开始迭代循环,因为这里我们要删除array元素,希望对您有所帮助。

HKS

将声明deleteItem() { console.log("ID ARTIKLA: ", this.item.title); var i = 0; for (i; i < this.ListOfUsedMaterials.length - 1; --i) { if (this.ListOfUsedMaterials[i]["title"] == this.item.title) { this.ListOfUsedMaterials.splice(i, 1); } } } 保留在for循环之外,因为for循环尝试为每次迭代创建新变量。