У меня есть onInit обработка, где вызываются некоторые данные БД, а затем объединены вместе. Я не могу вставить весь мой метод здесь, так как он не отформатирован должным образом.Angular2 и фильтр массива/find
u.skills.forEach(s => {
let skillEntry: SkillEntry = new SkillEntry();
skillEntry.skill = s;
let sbs: SkillBase[] = this.cachedSkillBases.filter(sb => sb.id == s.skillBaseId);
if (sbs.length>0) {
skillEntry.skillBase = sbs[0];
} else {
console.log('not found');
this._userService.getSkillBase(s.skillBaseId).toPromise()
.then(res => {
skillEntry.skillBase = res;
this.cachedSkillBases.push(res);
});
}
});
У меня есть временный кеш, реализованный здесь, чтобы ускорить работу, но поиск его не работает. В частности, я не знаю, почему эта фильтрация не работает, если переменная «s» существует и всегда имеет правильный идентификатор
let sbs: SkillBase[] = this.cachedSkillBases.filter(sb => sb.id == s.skillBaseId);
ли что-то я здесь отсутствует?
skillBaseId устанавливается автоматически на новый()? – misha130
Просто предположите, измените свой '==' на '==='. Сделать разницу? –
skillBaseId происходит из ранее загруженной базы данных. Он всегда существует и определенно не является проблемой. В противном случае вызов службы, который будет дальше, также потерпит неудачу. Выполнение === не помогает. – smoczyna