У меня есть наблюдаемая внутри службы, которая при подписке возвращает объект с часами пользователя, зарегистрированными для каждого проекта, над которым он работал.
this.calculationService.getSumsByProject().subscribe(sum =>
console.log(sum);
}
В журнале отображаются такие данные {undefined: 0, MISSING!: 16, Project1: 5, Project2:1, Project3: 20,Project4: 15}
Проекты являются частью массива типа Project, который выглядит примерно так:
projects: Project[] = [
{name: 'MISSING',ids:[]},
{name: 'Project1', ids:['pid75.22','pid75.23']},
{name: 'Project2', ids:['pid75.22','pid75.23']},
{name: 'Project3', ids:['pid66.1','pid33.99']},
{name: 'Project4', ids:['pdi75.88','pid99.15']}]
У меня есть массив идентификаторов пользователя, например:
currentUserIds=['pid75.22','pid100.03','pid75.88','Not Specified']
Что я хочу сделать:
Моя цель состоит в том, чтобы проанализировать пары ключ-значение объекта и добавить часы, зарегистрированные под идентификаторами пользователя. Не указано, получает часы от проектов, которые не имеют общих идентификаторов с пользователем.
Например:
pid75.22:6
pid100.03:0
pid75.88:15
Not specified:36
Что я уже сделал и где застрял
loggedProjectNames: string[];
loggedProjectHours: string[];
projectByName(name: string): Project {
return _.find(this.projects, { name }) || this.projects[0];
}
ngOnInit() {
this.calculationService.getSumsByProject().subscribe(sum => {
//console.log(sum);
this.loggedProjectNames = _.keys(sum);
this.loggedProjectHours = _.values(sum);
//console.log(this.loggedProjectNames,": ",this.loggedProjectHours);
this.loggedProjectNames.forEach(name => {
const found = this.projectByName(name);
this.currentUserIds.forEach(id => {
console.log(_.find(found.ids, i => i === id));
})
})
});
Как мне идти дальше? Теперь, когда я получил проекты, связанные с ключом, я не уверен, как сгруппировать часы, зарегистрированные по общему идентификатору