@Evtera

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

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

На выходе нужно получить массив со строками следующего вида: если одинаковые данные идут друг за другом, то они преобразовывались в "от - до : данные".
let strings = ["A-V : hello", "C : bye", "G : hello"];
  • Вопрос задан
  • 61 просмотр
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
arr
  .reduce((acc, [ [ k ], [ v ] ]) => (
    (!acc.length || acc[acc.length - 1][1] !== v) && acc.push([ [], v ]),
    acc[acc.length - 1][0].push(k),
    acc
  ), [])
  .map(([ k, v ]) => `${k.shift()}${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}`)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽