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

Как удалить дубли в массиве и зафиксировать с какого индекса начинается новое значение?

Есть данные, представленные в следующем виде:
[
  [["A"], ["hello"]],
  [["B"], ["hello"]],
  [["V"], ["hello"]],
  [["C"], ["bye"]],
  [["G"], ["hello"]],
];

На выходе нужно получить массив со строками следующего вида: если одинаковые данные идут друг за другом, то они преобразовывались в "от - до : данные".
let strings = ["A-V : hello", "C : bye", "G : hello"];
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const newArr = arr
  .reduce((acc, [ [ k ], [ v ] ], i, a) => (
    a[~-i]?.[1][0] !== v && acc.push([ [], v ]),
    acc[~-acc.length][0].push(k),
    acc
  ), [])
  .map(([ k, v ]) => `${k[0]}${~-k.length ? `-${k.pop()}` : ''} : ${v}`);
Ответ написан
Комментировать
WblCHA
@WblCHA
arr.reduce((acc, [[key], [value]]) => {

    if(acc[acc.length - 1]?.[1] === value) {
      acc[acc.length - 1][0][1] = key;
    }
    else {
      acc.push([[key], value]);
    }

    return acc;
  }, []).map(([keys, value]) => `${keys.join('-')} : ${value}`)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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