在我的Angular控制器中,我创建了一个附加到我的作用域上的单击处理程序的方法。此单击处理程序检查是否选中或取消选中复选框,并将关联的对象从数组中拉出或将其重新放入。
我的else
块,我将对象推回到阵列中,效果很好。但是,我尝试if
数组中这些对象的splice
块不起作用。
以下是相关代码:
vm.checkToggle = function(isChecked, value) {
if (!isChecked) {
var length = vm.markers.length;
for (var i = 0; i < length; i++) {
if (vm.markers[i].type === value) {
vm.markers.splice(i, 1);
}
}
} else {
...
};
我相信发生的事情是我的数组长度每次从splice
缩小,所以我不可避免地在循环中途遇到Cannot read property 'type' of undefined
错误。我怎么能处理从数组中删除这些对象而不遇到这个问题呢?
答案 0 :(得分:1)
您必须在数组上向后迭代,以便索引不会移位。这样的事情(未经测试)
{{1}}