AngularJS forEach 和 splice

2024-02-29

我有一个像这样的数组:

$scope.emails = [
  {"key":"Work","value":"[email protected] /cdn-cgi/l/email-protection"},
  {"key":"","value":""},
   {"key":"Work","value":"[email protected] /cdn-cgi/l/email-protection"}
  {"key":"","value":""}];

所以,我想删除空电子邮件但有角度forEach方法只删除一个对象,即最后一个对象,为什么???。

js code

angular.forEach($scope.emails, function(email, index){
     if(email.value ===""){
       $scope.emails.splice(index, 1);

     } 

    });

我哪里做错了

JS Bin http://jsbin.com/waxenusa/3/


问题是您在循环期间从数组中删除元素,因此后面的项目位于不同的索引处。您需要向后循环:

for (var i = $scope.emails.length - 1; i >= 0; i--) {
    if (!$scope.emails[i].value) {
        $scope.emails.splice(i, 1);
    }
}

这是一个更新的例子 http://jsbin.com/waxenusa/5.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS forEach 和 splice 的相关文章

随机推荐