Как получить массив диапазонов из массива чисел? JavaScript

Есть строка длиной 28 символов и есть массив чисел [3, 4, 5, 18, 19, 20, 21, 23, 24, 25] - это те символы, которые надо выделить. Задача сделать из это массива - массив диапазонов следующего вида:

[ [0, 2, false], [3, 5, true], [6, 17, false], [18, 21, true], [22, 22, false], [23, 25, true], [26, 27, false] ]

Подскажите как получить такие диапазоны?


Ответы (1 шт):

Автор решения: Igor

При чем здесь "строка" и какие-то "символы" - совершенно непонятно.

const indices = [3, 4, 5, 18, 19, 20, 21, 23, 24, 25];
const a = Array(28).fill(false);
indices.forEach(i => a[i] = true);

const ranges = [];
for (let i = 1, start = 0; i <= a.length; i++) {
  if (a[i] != a[start]) {
    ranges.push([start, i - 1, a[start]]);
    start = i;
  }
}

console.log(ranges);

→ Ссылка