Как сгруппировать ошибки файлов по errorCode в TypeScript?

Используйте Map с массивом на каждый errorCode: получите существующую группу или создайте новую, затем добавьте текущую ошибку. Map безопасно поддерживает произвольные строковые ключи.

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

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

Используйте Map с массивом на каждый errorCode: получите существующую группу или создайте новую, затем добавьте текущую ошибку. Map безопасно поддерживает произвольные строковые ключи.

Подробный разбор

Ответ с пояснениями

Условие

Тип ошибки: {fileId: string; errorCode: string}. Нужно вернуть Map<string, UploadError[]> с группами в порядке первого появления кода; ошибки внутри группы сохраняют исходный порядок. Вход не изменяется, код может быть любой строкой.

Ответ

Используйте Map с массивом на каждый errorCode: получите существующую группу или создайте новую, затем добавьте текущую ошибку. Map безопасно поддерживает произвольные строковые ключи.

type UploadError = {fileId: string; errorCode: string};
function groupErrors(errors: UploadError[]): Map<string, UploadError[]> {
  const groups = new Map<string, UploadError[]>();
  for (const error of errors) {
    const group = groups.get(error.errorCode);
    if (group) group.push(error);
    else groups.set(error.errorCode, [error]);
  }
  return groups;
}

Массивы групп новые, но сами объекты ошибок не копируются. Если потребителю нужен JSON, Map преобразуют в согласованный формат, а не рассчитывают на автоматическую сериализацию как объекта.

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

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

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

Подробнее