Приложение Angular, которое я разрабатываю, имеет SourceService
, который сначала выбирает источники из конечной точки API, сохраняет их в памяти и служит в качестве локального кэша, который может быть получен с помощью id
. Пока все хорошо, я думаю. Но функция findSourceById
всегда возвращает undefined
. Почему?
findSourceById(id: number): Source {
console.log(this.sources);
console.log(id);
console.log(this.sources.find(s => s.id === id));
return this.sources.find(s => s.id === id)
}
Вывод вышеуказанного:
Array [{id: 1} {id: 2}] // макет
2
не определено
Однако, если я использую DevTools для присвоения массива новой глобальной переменной, а затем запускаю ту же функцию find
для этой переменной, он возвращает ожидаемый элемент.
Кроме того, если я вставлю оператор debugger
непосредственно перед оператором return, я вижу, что this.sources
по-прежнему является массивом из двух, но что s
в определении функции find
не определено. Похоже, JavaScript неправильно передает элементы Array в итерацию цикла.