У меня есть массив projects
. Каждый project
имеет массив employees
. Каждый сотрудник имеет уникальный идентификатор id
. Я хотел бы объединить все employees
из всех projects
в массиве, но удалить дубликаты.
Сначала я подумал о создании Map<number, Employee>
, ключом которого будет идентификатор сотрудника. Таким образом, я могу проверить, есть ли на карте уже сотрудник id
в качестве ключа, и добавить его на карту, только если он не:
this.projects.forEach(project => {
project.employees.forEach(employee=> {
if (!this.employeeIdToEmployeeMap.has(employee.id)) {
this.employeeIdToEmployeeMap.set(employee.id, employee);
}
})
});
После этого я смог получить значения карты и преобразовать их в массив:
this.employees = Array.from(this.employeeIdToEmployeeMap.values());
Теперь у меня есть все employees
из всех projects
без дубликатов.
Есть ли лучший способ сделать это? Можно ли это сделать за O (n)?