Как дополнить решение: параллельно получить пользователей и возвращать username пользователя вместо userId для каждого поста?

Загрузите posts и users параллельно, постройте Map пользователей по id и присоедините username без вложенного поиска.

Короткий ответ

Что ответить на собеседовании

Загрузите 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), исходные записи не мутируются.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее