Как получить массив диапазонов из массива чисел? 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);