Загрузите posts и users параллельно, постройте Map пользователей по id и присоедините username без вложенного поиска.
Как дополнить решение: параллельно получить пользователей и возвращать username пользователя вместо userId для каждого поста?
Загрузите posts и users параллельно, постройте Map пользователей по id и присоедините username без вложенного поиска.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Загрузите posts и users параллельно, постройте Map пользователей по id и присоедините username без вложенного поиска.
Предполагаем существующие функции getPosts/getUsers и совпадающий тип идентификатора.
async function loadPosts(getPosts, getUsers) {
const [posts, users] = await Promise.all([getPosts(), getUsers()]);
const byId = new Map(users.map(u => [u.id, u.username]));
return posts.map(({ userId, ...post }) => ({
...post, username: byId.get(userId) ?? null
}));
}
При отсутствии пользователя возвращается null, не придуманное имя. Ожидаемая сложность объединения O(posts + users), исходные записи не мутируются.