Задать вопрос
@WAYNEDEV

Как сгруппировать расположенные последовательно элементы массива с одинаковыми значениями одного из свойств?

Есть массив:

const array = [
    { name: 'one', value: 1 },
    { name: 'one', value: 2  },
    { name: 'two', value: 3 },
    { name: 'one', value: 4 },
];

Надо сгруппировать соседние объекты с одинаковыми name'ами:

const result = [
           [
                { name: 'one', value: 1 },
                { name: 'one', value: 2  }
            ],
            [
                { name: 'two', value: 3 },
            ],
            [
                { name: 'one', value: 4 },
            ]
];

Как это сделать?
  • Вопрос задан
  • 133 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const groupAdjacent = (arr, newGroup) =>
  arr.reduce((acc, n, i, a) => (
    (!i || newGroup(n, a[~-i])) && acc.push([]),
    acc.at(-1).push(n),
    acc
  ), []);


const result = groupAdjacent(arr, (c, p) => c.name !== p.name);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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