如何从数组中删除某些类型的每个对象

时间:2015-08-09 16:59:36

标签: javascript angularjs

在我的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错误。我怎么能处理从数组中删除这些对象而不遇到这个问题呢?

1 个答案:

答案 0 :(得分:1)

您必须在数组上向后迭代,以便索引不会移位。这样的事情(未经测试)

{{1}}