Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
Javascript: Best way to delete item which contains objects with listener from array?
从
数组中删除包含带有侦听器的对象的项目的最佳方法是什么?我最担心的是对象侦听器。
以下是我创建数组的方法:
array_list.push({data: data, marker: marker, label: label});
数据包含信息,标记是谷歌地图标记,标签是用户可见的div元素。标记和标签添加了侦听器。
我已经找到了几种从数组中清除我的项目的方法(简单的方法):
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;
}
});
}
拼接方法(也很容易):
function remove_item(i) {
array_list.splice(i, 1);
}
删除包含侦听器的项目的最佳方法还是有更好的方法?请告诉我。谢谢你的时间。
我最终得到了一个解决方案,其中清除了一个对象并从数组中拼接了该项目。
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);
}
我希望这也对其他人有所帮助。欢迎提出意见和建议。
相关文章:
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器
- 如何从Addon SDK向选项卡对象添加进度侦听器
- 向JavaScript对象添加侦听器函数
- 如果在设置侦听器之前触发了 DOMContentLoaded 事件,如何检索“事件”对象
- 如何使用附加的 keymaster.js 侦听器杀死 JS 对象
- 在 <对象> 标记中加载 SVG 时,将侦听器添加到 SVG 卸载事件
- Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
- 如何在JavaScript中为任何对象实现事件侦听器
- 如何使用.bind(this)删除对象的事件侦听器
- 正在创建事件侦听器以从本地存储中删除对象
- 是否可以为数组中的每个对象定义事件侦听器
- 对象在JavaScript中引用,但在使用事件侦听器时不引用
- 使用冲突的事件侦听器将对象分隔到原型链中
- 使用 Google Maps API 侦听器时检索 JavaScript 的事件对象
- 在对象内部定义的事件侦听器
- 从具有事件侦听器的对象调用函数
- 将对象函数传递给事件侦听器 JavaScript
- Javascript:在对象文字函数中定义的事件侦听器使代码死亡
- Javascript 事件侦听器在对象方法中不起作用
- 与许多事件侦听器和函数引用一个对象相比,什么是更好的方法