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

Как добавить в подмассивы повторяющиеся элементы массива?

Надо объединить повторяющиеся элементы массива в подмассивы.

Например,

[ 0, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4 ]

должен превратиться в

[ 0, [1, 1, 1, 1], [2, 2, 2], 3, [4, 4, 4] ]
  • Вопрос задан
  • 461 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = arr
  .reduce((acc, n, i, a) => (
    a[i - 1] !== n && acc.push([ n, 0 ]),
    acc[acc.length - 1][1]++,
    acc
  ), [])
  .map(([ v, c ]) => c < 2 ? v : Array(c).fill(v));

или

const result = arr
  .reduce((acc, n, i, a) => (
    a[i - 1] === n || acc.push([]),
    acc[acc.length - 1].push(n),
    acc
  ), [])
  .map(n => n.length === 1 ? n[0] : n);

или

const result = arr.reduce((acc, n, i, a) => {
  const prev = n === a[~-i];
  const next = n === a[-~i];
  !prev && next && acc.push([]);
  (prev || next ? acc[~-acc.length] : acc).push(n);
  return acc;
}, []);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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