foreach => delete(element)-告诉我this.data.recipe.ingredientList.delete不是函数

时间:2019-11-13 10:02:24

标签: angular

我正尝试删除一个有角度的列表,但它给我发送了一个错误-有人可以帮我吗?

    ERROR TypeError: _this.data.recipe.ingredientList.delete is not a function
    at add-recipe.component.ts:110
    at Array.forEach (<anonymous>)
    at AddRecipeComponent.push../src/app/components/HomePage/dialog/add-recipe/add-recipe.component.ts.AddRecipeComponent.saveEdition (add-recipe.component.ts:109)
    at Object.eval [as handleEvent] (AddRecipeComponent.html:87)
    at handleEvent (core.js:10251)
    at callWithDebugContext (core.js:11344)
    at Object.debugHandleEvent [as handleEvent] (core.js:11047)
    at dispatchEvent (core.js:7710)
    at core.js:8154
    at HTMLButtonElement.<anonymous> (platform-browser.js:988)

ts中的代码

      this.ingr = this.data.recipe.ingredientList;
    this.data.recipe.ingredientList.forEach(element => {
      this.data.recipe.ingredientList.delete(element);
    });

3 个答案:

答案 0 :(得分:0)

您有两个选择:

1:您可以重置阵列,假设这是一个阵列

this.data.recipe.ingredientList = []

2:如果要从数组中删除元素,则可以使用foreach的index参数,因为您正试图从数组中删除元素。这只是为了纠正您的方法,如果满足您的需求,请使用第一个选项。

this.ingredientList.forEach((element, index) => {
    this.ingredientList.splice(index,1);
  });

答案 1 :(得分:0)

'delete' is not a function : Because there's no delete function on javascript array
     

要删除Array对象中的元素,可以使用splice()或filter()预定义的javascript函数

下面是使用filter()的示例:

 countyCode =  [1,2,3,4,5,6];
    
    console.log(countyCode.filter( element => {return element !== 5}));

答案 2 :(得分:0)

1)首先,您必须交叉检查已声明的IngredientList变量是否为数组。如果它不是数组,那么您将无法使用数组函数。

2)另外,删除不是数组函数。要从数组中删除/删除元素,可以使用拼接功能。

this.ingredientList.forEach(i => {
  const index = this.ingredientList.indexOf(i)
  this.ingredientList.splice(index,1);
})