@Utopia

Удаление объектом самого себя, как?

Есть массив объектов -
myArr = [a,b,c....];

каждый объект, должен иметь функцию удаляющую себя (этот объект) из родительского массива. Вроде:
a = {
	id: 'id',
	props: 'props',
	metodDelete: function (myArr){
		/// удалить объект "a"  из массива "myArr"
		}
}


Как правильнее реализовать это действие? Перебором? Типа:
a = {
	id: 'id',
	props: 'props',
	metodDelete: function (myArr){
		for (i=0; i<myArr.length; i++){
			if ( myArr[i] == this ){
				delete myArr[i];
			}
		}
	}
}

Это эффективно? Нет ли какого то хитрого метода объектов, позволяющего получать все ссылки на самого себя? Типа - "кто на меня ссылается?" - глобально?
  • Вопрос задан
  • 363 просмотра
Пригласить эксперта
Ответы на вопрос 1
Seasle
@Seasle Куратор тега JavaScript
Если именно такая задумка, можно так.
const deleteHandler = function (array) {
  const filtered = array.filter(entry => entry !== this);

  array.length = 0;
  array.push(...filtered);
};

const array = [
  {
    id: 1,
    delete: deleteHandler,
  },
  {
    id: 2,
    delete: deleteHandler,
  },
];

console.log(array); // [ { id: 1, delete: [Function: deleteHandler] }, { id: 2, delete: [Function: deleteHandler] } ]

const a = array[1];
a.delete(array);

console.log(array); // [ { id: 1, delete: [Function: deleteHandler] } ]

Возможно, лучше будет использовать Map, вместо такого поведения.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы