@dmitry2000

Как преобразовать массив в другой массив?

Есть массив:
const arr = [
                {
                    id: 1,
                    group: 1,
                    name: 'Ivan'
                },
                {
                    id: 2,
                    group: 1,
                    name: 'Ivan'
                },
                {
                    id: 3,
                    group: 1,
                    name: 'Ivan'
                },
                {
                    id: 4,
                    group: 2,
                    name: 'Ivan'
                }
            ];

Как преобразовать в такой?
const output = [
                {
                    people: [
                        {
                            id: 1,
                            group: 1,
                            name: 'Ivan'
                        },
                        {
                            id: 2,
                            group: 1,
                            name: 'Ivan'
                        },
                        {
                            id: 3,
                            group: 1,
                            name: 'Ivan'
                        }
                    ],
                    groupId: 1
                },
                {
                    people: [
                        {
                            id: 4,
                            group: 2,
                            name: 'Ivan'
                        }
                    ],
                    groupId: 2
                }
            ];
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
kavi4
@kavi4
Web developer
const arr = [
                {
                    id: 1,
                    group: 1,
                    name: 'Ivan'
                },
                {
                    id: 2,
                    group: 1,
                    name: 'Ivan'
                },
                {
                    id: 3,
                    group: 1,
                    name: 'Ivan'
                },
                {
                    id: 4,
                    group: 2,
                    name: 'Ivan'
                }
            ];

const map = new Map();

arr.forEach((item)=>{

    let group = map.get(item.group) || {groupId:item.group, people:[]}
    group.people.push(item)
    map.set(item.group, group)

});
 
const output = Array.from(map.values());

поиск по Map работает за константное время(не зависящее от количества элементов). Можно также использовать обьект.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы