Javascript:从数组中删除包含具有侦听器的对象的项目的最佳方法?

时间:2016-04-21 16:32:45

标签: javascript arrays google-maps google-maps-api-3

从数组中删除包含侦听器的对象的项目的最佳方法是什么?我主要担心对象听众。

以下是我创建数组的方法:

array_list.push({data: data, marker: marker, label: label});

数据包含信息,标记是谷歌地图标记,标签是div -element,对用户可见。标记和标签添加了听众。

我已经找到了几种方法从数组中清除我的项目(简单方法):

function remove_item(i) {
  var label = array_list[i]['label'];
  array_list = array_list.filter(function (obj) {
    return obj.label !== label;
  });
}

另一种方式是:

function remove_item(i) {
  var label = array_list[i]['label'];
  array_list = array_list.filter(function (obj) {
    if (obj.label == label) {
      obj.data = null;
      obj.marker = null;
      obj.label = null;
      return null;
    }
    else {
      return obj;
    }
  });
}

Splice -method(也很简单):

function remove_item(i) {
  array_list.splice(i, 1);
}

哪个是删除包含侦听器的项目的最佳方法,还是有更好的方法?请告诉我。谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

我最终得到了一个解决方案,其中一个对象被清除,并且该项目是从一个数组拼接而来。

function remove_item(i) {
  var item = array_list[i];

  // Remove marker from map
  item['marker'].setMap(null);

  // Remove label from html list content
  item['label'].parentElement.removeChild(item['label']);

  // Set Objects to null
  item['data'] = null;
  item['marker'] = null;
  item['label'] = null;
  array_list.splice(i, 1);
}

我希望这对其他人也有帮助。欢迎提出意见和建议。