@LoranDeMarcus

Как создать несколько массивов объектов на основе одного массива объектов?

Есть массив вида

const arr = [
    {
      id: '0'
    },
    {
      id: '0.0'
    },
    {
      id: '0.1'
    },
    {
      id: '0.2'
    },
    {
      id: '0.3'
    },
    {
      id: '1'
    },
    {
      id: '1.0'
    },
    {
      id: '1.1'
    },
    {
      id: '2'
    },
    {
      id: '2.0'
    },
    {
      id: '2.1'
    },
    {
      id: '2.2'
    },
  ...
  ]


Как из него получить несколько массивов вида?

const result0 = [
    {
      id: '0'
    },
    {
      id: '0.0'
    },
    {
      id: '0.1'
    },
    {
      id: '0.2'
    },
    {
      id: '0.3'
    }
  ]
  
  const result1 = [
    {
      id: '1'
    },
    {
      id: '1.0'
    },
    {
      id: '1.1'
    }
  ]
  const result2 = [
    {
      id: '2'
    },
    {
      id: '2.0'
    },
    {
      id: '2.1'
    },
    {
      id: '2.2'
    },
  ]

const resultN = [
  ...
]
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Создать промежуточный объект-словарь.
Ключи – префиксы – общие части строк, до точки: "0", "1", "2"...
Значения – массивы с исходными объектами.
const results = Object.values(arr.reduce((acc, c) => {
    const prefix = c.id.split('.')[0];
    acc[prefix] = [...acc[prefix] ?? [], c];
    return acc;
  }, {})
);

/* [
  [{"id":"0"},{"id":"0.0"},{"id":"0.1"},{"id":"0.2"},{"id":"0.3"}],
  [{"id":"1"},{"id":"1.0"},{"id":"1.1"}],
  [{"id":"2"},{"id":"2.0"},{"id":"2.1"},{"id":"2.2"}],
] */
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы