我有一个像这样的数组:
$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(使用前将#替换为@)