Назад к задачам
Junior — Middle+
14

Группировка массива пользователей по выбранному полю с формированием вложенной карты ID

Компании, где спрашивали:

IT OneIT One
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо сгруппировать массив объектов‑пользователей по одному из его полей (кроме id). Для каждой полученной группы следует создать объект (или Map), где:

  • ключами выступают значения id пользователей;
  • значениями – объекты пользователей без свойства id.
const users = [
    { id: 1, age: 20, name: "Иван", country: "Russia", registered: true },
    { id: 2, age: 30, name: "Дима", country: "USA", registered: true },
    { id: 3, age: 25, name: "Леха", country: "Russia", registered: false },
    { id: 4, age: 20, name: "Леха", country: "USA", registered: false },
    { id: 5, age: 30, name: "Иван", country: "Russia", registered: true },
    { id: 6, age: 50, name: "Леха", country: "Russia", registered: true },
    { id: 7, age: 20, name: "Дима", country: "USA", registered: false }
];

console.log(groupUsers(users, "country"));

/*
{
    "Russia": {
        "1": { age: 20, name: "Иван", registered: true },
        // ... остальные пользователи из России
    },
    "USA": {
        "2": { age: 30, name: "Дима", registered: true },
        // ... остальные пользователи из США
    }
}
*/

Функция groupUsers должна принимать массив и название поля, по которому происходит группировка, и возвращать структуру, описанную выше.