Как осуществить поиск в аккумуляторе при использовании reduce?

Хочу сделать группировку при совпадении a.
Как осуществить поиск в аккумуляторе при использовании reduce?

let dataAr = [{ a: 5, b: 60 }, { a: 5, b: 70 } ];

	function groupData(dar) {
	  const result = dar.reduce((acc, cur) => {
	    const index = acc.findIndex(item => cur.a === item.a)

	    if (index !== -1)  {
        acc[index].groups.push(cur.b);
      } else {
	      return acc.concat({
	        a: cur.a,
          groups: [
            cur.b
          ]
        })
      }
    })

    return result;
  }
  
  console.log(groupData(dataAr));
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Не надо никаких поисков. Собираете данные в обычный объект или Map, где ключами будут значения свойства, по которому выполняется группировка, после обработки массива выдёргиваете из результата значения:

Object.values(arr.reduce((acc, { a, b }) => (
  (acc[a] ??= { a, items: [] }).items.push(b),
  acc
), {}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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