javascript - for 循环内的 Array.splice 导致错误

标签 javascript

我使用 Angular ng-repeat 显示 $scope.currentMessageList 数组

我还有一个通过 ng-click 绑定(bind)到删除函数的删除按钮,如下所示:

remove: function () {
    for (var i = 0; i < 25; i++) {
        var index = i;
        $scope.currentMessageList.splice(index, 1);
        console.log($scope.currentMessageList.length + 'left');
    }
}

这个集合中有25个项目,当我调用remove函数时, 我得到这个输出:

 24left
 23left
 22left
 21left
 20left
 19left
 18left
 17left
 16left
 15left
 14left
 13left
13times X 12left

如果我用 angular.forEach 替换 for 循环 我只得到一次“12 left”,但它仍然不会删除超过 13 个项目

我也尝试过使用 angular.apply,但我得到摘要已在进行中错误

最佳答案

在遍历数组时执行拼接是一个坏主意。

你应该更换

            for( var i = 0; i < 25; i++ ){
                var index = i;

                $scope.currentMessageList.splice( index, 1 );
                console.log($scope.currentMessageList.length + 'left');                     
            }

通过一个简单的

$scope.currentMessageList.splice( 0, 25 );

关于javascript - for 循环内的 Array.splice 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28723049/

相关文章:

javascript - 哪个 jPlayer 事件指定开始播放的能力?

Javascript indexOf 没有按预期工作

javascript - 我应该如何重新使用 useState 中的 React hooks setX?

javascript - 当 JS var 的值为 0(零)时, Controller API 将其替换为空字段 (2sxc - DNN)

jquery post 和 promise 的 Javascript 范围问题

javascript - 使用表单数据上传多个文件,表单数据结构在 1 个文件、2 个文件和 3 个以上文件上发生变化

javascript - 直接设置 DOM 属性和通过 requestAnimationFrame 设置有什么区别?

javascript - 将内联样式存储到 jquery 变量中

javascript - 如何通过单击链接从 JSP 页面打开文件选择器?

Javascript 正则表达式不敏感的土耳其字符问题