Удаление дубликатов из списка объектов

#angular #typescript #filter #duplicates

#angular #typescript #Фильтр #дубликаты

Вопрос:

Я новичок в Type script и пытаюсь удалить дублирующиеся объекты на основе свойства, в моем случае его единственного идентификатора. Я пытаюсь использовать filter, но не могу этого сделать. Я вставил свой код ниже. Не мог бы кто-нибудь, пожалуйста, направить меня. МОЙ список имеет тип employee, и я создал класс модели для employee.идентификатор может дублироваться из-за некоторых неверных данных, и в качестве обхода мне нужно удалить дубликат из списка и показать его в пользовательском интерфейсе.

Я пытался преобразовать его в set, но не сработало.

      ids : Employee[] = new Array<Employee>();
     this.list.filter((this.list=> ids.includes(this.list.idPk) ? false : ids.push(this.list.idPk));
  

Ответ №1:

 ids : Employee[] = new Array<Employee>();

 var newList  = this.list.filter(list => !ids.includes(list.idPk));
 ids.concat(newList)
  

Комментарии:

1. Хотя этот код может решить проблему, включение объяснения того, как и почему это решает проблему, действительно помогло бы улучшить качество вашего поста и, вероятно, привело бы к большему количеству голосов «за». Помните, что вы отвечаете на вопрос для читателей в будущем, а не только для человека, задающего сейчас. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения и указать, какие ограничения и допущения применяются.

2. Извините, я не смог вам перезвонить, так как был перегружен текущей работой по проекту и отложил свое обучение в сторону. Спасибо за ваш ответ, я пытался это сделать, но это дает мне исключение для точек с запятой, хотя я поставил все точки с запятой. в этом списке могут быть дублирующиеся продукты с одинаковым идентификатором. частный список продуктов: Product[] = новый массив<Product>(); частный список продуктов: Product[] = новый массив<Product>(); this.prdList = this.productsList.filter( productsList => !this.prdList.includes(productsList.rowidObject)); this.productsList = this.prdList;

Ответ №2:

Извините, я не смог вам перезвонить, так как был перегружен текущей проектной работой и отложил свое обучение в сторону. Спасибо за ваш ответ, я пытался это сделать, но это дает мне исключение для точек с запятой, хотя я поставил все точки с запятой. в этом списке могут быть дублирующиеся продукты с одинаковым идентификатором. Мне нужно удалить дубликаты на основе идентификатора из продукта.

    private productsList: Product[] = new Array<Product>();
   private prdList: Product[] = new Array<Product>();

   this.prdList  = this.productsList.filter(
    productsList => !this.prdList.includes(productsList.rowidObject));
   this.productsList = this.prdList;