如何不从我的阵列中删除最后一项

问题描述:

我有一个从数组中删除项目的问题。我目前的一段代码是删除该项目。但它总是最后一个,而不是我选择的那个。我已经发现了一些线索,指数需要对-1如何不从我的阵列中删除最后一项

阵列进行检查

ngOnInit() { 
    this.todos = [ 
     { 
      text: 'Pick up' 
     }, 
     { 
      text: 'Meeting' 
     }, 
     { 
      text: 'Dish washing' 
     } 
    ]; 
} 

功能

addTodo(){ 
    this.todos.push({ 
     text: this.text 
    }); 
} 
deleteTodo(todoText){ 
    this.todos.splice(this.todos.indexOf(todoText), 1); 
} 
+0

请确保您通过托德o项目本身,而不是文本 –

不仅通过todoText你的删除方法,通过整个todo,因此,如果您的模板看起来是这样的:

<div *ngFor="let todo of todos" (click)="deleteTodo(todo)"> 
    {{todo.text}} 
</div> 

然后您的删除方法在您的TS中正常工作:

deleteTodo(todo){ 
    this.todos.splice(this.todos.indexOf(todo), 1); 
} 
+0

工作谢谢! – Damien

+0

不客气,很高兴我能帮忙! :) – Alex

在你的代码的问题是,你是通过对象引用比较,这样做这个:

deleteTodo(todoText){ 
    this.todos 
     .splice(this.todos.map(todo=>todo.text) 
     .indexOf(todoText.text), 1); 
    } 

我假设todoText参数是一个具有文本本身的对象TY。

,如果你想通过短信删除:

deleteTodo(text){ 
     this.todos 
      .splice(this.todos.map(todo=>todo.text) 
      .indexOf(text), 1); 
}