gpt4 book ai didi

javascript - 如何让所有已完成的任务在函数调用时清除?

转载 作者:行者123 更新时间:2023-11-30 11:34:17 24 4
gpt4 key购买 nike

我在 Angular 中工作,我有切换 bool 值的复选框(表示任务完成)。我还有两个数组,一个保存对象列表,另一个保存完成和清除后的第一个键值。

$scope.taskList = [{
complete: false,
foo: "1",
bar: "2",
baz: "3"
}];

$scope.completedTasks = [];

当只有一个或两个被选中时,下面的函数可以正常工作以清除任务;但是,当检查的项目数量增加时,只有一部分检查的项目会被清除;如果你一直调用这个函数,最终所有的任务都会被清除,但我不知道如何一举清除整个列表。

$scope.clearComplete = function() {
for (var i = 0; i < $scope.taskList.length; i++) {
if ($scope.taskList[i].complete == true) {
$scope.completedTasks.push($scope.taskList[i].foo);
$scope.taskList.splice(i, 1);
}
}
console.log($scope.completedTasks);
return $scope.taskList;
};

我不知道如何纠正逻辑,希望一些新鲜的眼光能够帮助我。

对于这个项目,我试图在没有 Underscore 和 Lodash 等其他辅助库帮助的情况下保持较低的依赖性。

最佳答案

首先,如果您正在执行 taskList.splic,则向后循环。否则你可以这样做:

var incompleteTasks = [];
$scope.tasks.forEach(function(task){
if(task.complete) {
$scope.completedTasks.push(task.foo);
} else {
incompleteTasks.push(task);
}
});
$scope.tasks = incompleteTasks;

因此,您将只迭代一次数组,并以非常简洁的方法实现它。

关于javascript - 如何让所有已完成的任务在函数调用时清除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45090507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com