"搜索并销毁“;迭代不会'不要一次删除所有项目
"Search and destroy" iteration doesn't delete all of the items at once
我有这段代码来遍历数组,并删除属性completed
等于true
的所有对象。当我用这个代码块执行函数时,它不会删除所有项目。它会删除其中一个,有时会删除一半,然后我需要按几次按钮才能删除所有内容,而不是只按一次。为什么会发生这种情况,我该如何解决?
var toDoItems = $scope.toDoItems;
for (var i = 0; i < toDoItems.length; i++)
if (toDoItems[i].completed === true)
toDoItems.splice(i, 1)
ls.set('toDoData', toDoItems)
完成拼接后,执行i--
以减少计数器,因为toDoItems.length
已经减少,而i
在下一项中应保持不变。
for (var i = 0; i < toDoItems.length; i++)
{
if (toDoItems[i].completed === true)
{
toDoItems.splice(i, 1)
i--;
}
}
我能想到的另一种选择是,不删除已完成的项目,而是将未完成的项目推送到一个空数组中:
var toDoItems = [];
for (var i = 0; i < $scope.toDoItems.length; i++)
if ($scope.toDoItems[i].completed !== true)
toDoItems.push($scope.toDoItems[i]);
ls.set('toDoData', toDoItems)
或者,您可以使用Array.prototype.filter()
:
var toDoItems = $scope.toDoItems.filter(function (item) {
return item.completed !== true;
});
ls.set('toDoData', toDoItems)
相关文章:
- 如何从 HTML 查询中删除项目
- 如何在NativeScript中从列表中删除项目时设置动画
- 删除项目时的JavaScript计算
- 如何从Firebase聊天中删除项目
- 使用 id 和 Javascript 从数组中删除项目
- JavaScript - 从框中删除项目名称
- 从mysql数据库中删除项目,然后返回最后一页
- 从数组中删除项目,为什么输出中的 for 和 for 不同
- 如何在获取时删除项目视图
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 从集合中删除项目时,将其从视图中删除
- 如何从状态数组中删除项目
- 如何使用javascript删除项目和清除表单
- KnockoutJS :如何从子数组中删除项目
- 如何从网格中删除项目时重置数组
- 是否可以通过使用 javascript 获取数组中的一个项目来删除项目
- 如果源 json 已更新(添加或删除项目),则动态更新 D3 旭日
- 使用 setTimeout() 函数从本地存储中删除项目
- 删除项目实际上并没有删除它
- 如何在 Angular 中使用拼接从列表中删除项目