angularjs forEach和splice

cha*_*ndu 20 javascript array-splice angularjs

我有这样一个数组:

$scope.emails = [
  {"key":"Work","value":"user@domine.com"},
  {"key":"","value":""},
   {"key":"Work","value":"user2@domine.com"}
  {"key":"","value":""}];
Run Code Online (Sandbox Code Playgroud)

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

js代码

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

     } 

    });
Run Code Online (Sandbox Code Playgroud)

我做错了

JS Bin

Jam*_*ice 55

问题是你在循环期间从数组中删除元素,以便后面的项目处于不同的索引.你需要向后循环:

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

这是一个更新的例子.