gtomilin
@gtomilin
JavaScript HTML CSS

Удалить из массива объект добавленный с помощью this?

Добрый день!
Имеется класс popUper с набором методов.
Один из методов close() - удаление объекта, закрытие и т.д.
Каждый объект созданный на основе класса добавляется в глобальный массив window.popUpers
Сделано для того чтобы глобальные EventListeners удалялись в случае отсутствия объектов созданных на основе класса.
Есть ли какой-то способ удалять объект из глобального массива, через this, без использования уникальных идентификаторов и последующего перебора, только через this

class popUper {
    constructor(params){
      window.popUpers.push(this)
   }
   close() {
        // удалить объект из массива используя this или ещё другим способом без перебора уникальных идентификаторов
        window.popUpers......delete ths??
   }
}


Если есть другие варианты и идеи реализации буду рад прочитать)
  • Вопрос задан
  • 65 просмотров
Решения вопроса 2
twobomb
@twobomb
close() {
        // удалить объект из массива используя this или ещё другим способом без перебора уникальных идентификаторов
   let inx =    window.popUpers.indexOf(this)
if (inx > -1) 
window.popUpers.splice(inx , 1)
   }
Ответ написан
Lynn
@Lynn
nginx, js, css
Найти себя и удалить:
window.popUpers.splice(window.popUpers.indexOf(this), 1)


Только это приведёт к смещению индексов, так что если у вас какой-то код зачем-то запоминал позиции элементов в этом массиве, то он будет глючить.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 11:53
3000 руб./за проект
22 нояб. 2024, в 11:51
20000 руб./за проект
22 нояб. 2024, в 11:50
200000 руб./за проект