@dmitry2000

Как из массива объектов сделать n-ое количество массивов по значению в объекте?

Есть массив объектов, к примеру:
let h = [
                {
                    name: 'Petya',
                    id: 1
                },
                {
                    name: 'Vasya',
                    id: 2
                },
                {
                    name: 'Kolya',
                    id: 3
                },
                {
                    name: 'Sveta',
                    id: 1
                }
            ];

            let h1 = [
                {
                    name: 'Petya',
                    id: 1
                },
                {
                    name: 'Sveta',
                    id: 1
                }
            ];

            let h2 = [
                {
                    name: 'Vasya',
                    id: 2
                }
            ];

            let h3 = [
                {
                    name: 'Kolya',
                    id: 3
                }
            ];


Массив h содержит всё подряд. Хотелось бы разделить на n-ое количество массивов, к примеру по id, где в каждом массиве будут собраны уникальные id, а элементы все, которые там есть. Т.е. в результате хочется получить массивы h1, h2, h3
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
в результате хочется получить массивы h1, h2, h3

В общем случае вы не знаете, сколько будет разных id и какими будут их значения. Так что просто массивы вам не нужны, их следует сложить в объект (или Map):

const grouped = arr.reduce((acc, n) => ((acc[n.id] ??= []).push(n), acc), {});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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