Код Middle Дженерики спрашивают часто обновлено
Типизированный groupBy по ключу объекта
Условие
Напиши groupBy(items, key): группирует массив объектов по значению поля key. Тип должен быть точным:
keyтолько из ключей элемента, и только из тех, у которых значениеstringилиnumber(по ним можно индексировать объект);- результат
Partial<Record<T[K], T[]>>: еслиT[K]это'admin' | 'user', у результата ровно такие ключи.
Порядок элементов внутри группы исходный.
Примеры
groupBy([{"id":1,"role":"admin"}, {"id":2,"role":"user"}, {"id":3,"role":"admin"}], "role") // {"admin":[{"id":1,"role":"admin"},{"id":3,"role":"admin"}],"user":[{"id":2,"role":"user"}]}
groupBy([], "role") // {}
groupBy([{"n":"a","age":30}, {"n":"b","age":30}, {"n":"c","age":20}], "age") // {"20":[{"n":"c","age":20}],"30":[{"n":"a","age":30},{"n":"b","age":30}]}
Как подойти
Подсказки: 2
KeysOfTypeоставляет только ключи с нужным типом значения.- Индексировать
Recordможно толькоPropertyKey, отсюда пересечениеT[K] & PropertyKey.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.