#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;