Javascript 角度JS-离子-从阵列中删除

Javascript 角度JS-离子-从阵列中删除,javascript,arrays,angularjs,ionic,Javascript,Arrays,Angularjs,Ionic,您好,我在尝试从数组中删除时遇到索引问题 <i class="icon ion-ios-checkmark-outline" ng-click="addToHistory(task.info, task.measured, task.total, task.done, task.id)" ></i> {{task.info}} 上面的方法是有效的,但是当我尝试删除第一个项目,然后选择第二个项目时,第三个项目被删除,而不是第二个项目。我知道这

您好,我在尝试从数组中删除时遇到索引问题

 <i class="icon ion-ios-checkmark-outline" ng-click="addToHistory(task.info, task.measured, task.total, task.done, task.id)"  ></i> 
            {{task.info}}
上面的方法是有效的,但是当我尝试删除第一个项目,然后选择第二个项目时,第三个项目被删除,而不是第二个项目。我知道这是一个索引问题,但我不知道如何解决它

概括地说,我有:

  • 项目1(索引0)
  • 项目2(索引1)
  • 项目3(索引2)
当我删除我得到的第一个

  • 项目2(索引0)
  • 项目3(索引1)

当我试图删除Item2时,我得到的索引是1,因此Item3被删除。

我认为问题在于使用task.id进行查找

请尝试传入$index

<i class="icon ion-ios-checkmark-outline" ng-click="addToHistory($index, task.info, task.measured, task.total, task.done, task.id)"  ></i> 
            {{task.info}}
文件

尝试在索引id处获取任务-现在,根据该id的生成方式,您可以有以下内容:

$scope.tasksCollection[123] - which won't make sense (if it's an actual entity id)
或者,如果在客户端设置id属性,则一旦从集合中删除,id将不匹配


按照HockeyJ的建议,使用$index完成您想要完成的操作。

在循环中使用拼接是一个问题。拼接将重新为数组编制索引,并使“长度”属性过时。通常,解决方案是在删除时向后遍历数组。有关更多帮助,请参阅前面的答案


感谢您可能是新来的SO。如果其中一项/任何一项是正确的,请将其标记为正确的,以方便将来的搜索者。
$scope.tasksCollection[id]
$scope.tasksCollection[123] - which won't make sense (if it's an actual entity id)