foreach 循环中的 JavaScript 拼接函数递减索引

标签 javascript angularjs

<分区>

$scope.clearCompleted = function()
        {
            angular.forEach($scope.todos, function(todo, i)
            {
                if(todo.done)
                {
                    $scope.todos.splice(i, 1);
                }
            });

            if($scope.todos.length == 0)
            {
                $scope.isEmpty = true;
            }
        }

这是我从数组中删除“已完成”待办事项的代码, 但是当两个待办事项相继被删除时,它只会删除第二个。 我认为这是因为拼接函数重置并返回拼接数组。

最佳答案

您从迭代的数组中拼接元素,因此减少了“todos”中的索引。对不起,我的英语不好。

var notDonedTodos = [];
angular.forEach($scope.todos, function(todo, i)
{
    if(!todo.done)
    {
       notDonedTodos.push(todo);
    }
});

$scope.todos = notDonedTodos;

关于foreach 循环中的 JavaScript 拼接函数递减索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16884544/

相关文章:

javascript - 如何使用 python Selenium 或 JavaScript 控制台设置 AngularJS Controller 变量的值?

javascript - 如何使用 JavaScript 检测字符串中的图像文件扩展名

javascript - 我可以在方法调用中使用 null 作为参数吗?

javascript - 如果我使用了默认选择选项,如何读取 ng-model 数据?

angularjs - 将数组传递给 angularJs 中的 $location.search

javascript - 如何在按下手机后退按钮时关闭 ionic 弹出窗口

javascript - Angular JS注入(inject)器模块错误

javascript - 如何使用javascript逐个字母地读取文本字段中的字母

javascript - 根据用户对 CharAt 的选择,我如何添加句子的其余部分?

javascript - 双向无限滚动 - 向上和向下