Я загружаю пользователей с их навыками:
let users: Observable<UserModel[]> this.userService.getOpen().pipe(
map((payload: Payload<UserResponse[]>) =>
payload.result.map((response: UserResponse) => {
return {
userId: response.userId,
skillsNames: response.skills.map((skill: SkillModel) => skill.name)
};
})));
Мне нужно отсортировать skillsNames
, показывая сначала те, которые являются общими для проекта.
Чтобы получить навыки a project
Я делаю следующее:
let skills: Observable<SkillModel[]> = this.skillService.getByProjectId(id).pipe(
map((payload: Payload<SkillResponse[]>) =>
payload.result.map((response: SkillResponse) => {
return {
skillId: response.skillId,
name: response.name
};
})));
Я также могу выполнить сопоставление между SkillModel
пользователя и SkillModel
проекта * по skillId
, но в конце получаю имена.
Как это сделать?
Обновление
Я добавляю пример, чтобы лучше объяснить, что я ищу:
let users = [
{
userId: 1,
skills: [
{ Id: 1, name: 'Javascript' },
{ Id: 2, name: 'CSS' }
]
},
{
userId: 2,
skills: [
{ Id: 1, name: 'Javascript' },
{ Id: 2, name: 'CSS' }
{ Id: 3, name: 'C#' }
]
},
];
let project = {
projectId: 1,
skills: [
{ Id: 2, name: 'CSS' },
{ Id: 3, name: 'C#' }
]
},
Поэтому я хотел бы изменить порядок навыков каждого пользователя, чтобы навыки, которые также присутствуют в навыках проекта, были первыми. Таким образом, пользователи стали бы:
let users = [
{
userId: 1,
skills: [
{ Id: 2, name: 'CSS' },
{ Id: 1, name: 'Javascript' }
]
},
{
userId: 2,
skills: [
{ Id: 2, name: 'CSS' }
{ Id: 3, name: 'C#' }
{ Id: 1, name: 'Javascript' }
]
},
];
Посмотрите, как в обоих случаях навыки, которые появляются в проекте, повышаются у каждого пользователя.