从数组中删除包含侦听器的对象的项目的最佳方法是什么?我主要担心对象听众。
以下是我创建数组的方法:
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);
}
哪个是删除包含侦听器的项目的最佳方法,还是有更好的方法?请告诉我。谢谢你的时间。
答案 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);
}
我希望这对其他人也有帮助。欢迎提出意见和建议。