Используйте Map с массивом на каждый errorCode: получите существующую группу или создайте новую, затем добавьте текущую ошибку. Map безопасно поддерживает произвольные строковые ключи.
Как сгруппировать ошибки файлов по errorCode в TypeScript?
Используйте 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 преобразуют в согласованный формат, а не рассчитывают на автоматическую сериализацию как объекта.