(()=>{
const sequenceToRange = numbers => {
if (!numbers.length)
return '';
let result = '';
let rangeFinishedYet = true;
for (let i = 0; i < numbers.length; i++) {
if (rangeFinishedYet) {
result += numbers[i];
}
if (numbers[i+1] - numbers[i] > 1 || numbers.length === i + 1) {
if (!rangeFinishedYet) {
result +=
-${numbers[i]}
;
}
if (i !== numbers.length - 1) {
result += ', ';
}
rangeFinishedYet = true;
continue;
}
if (rangeFinishedYet) {
rangeFinishedYet = false;
}
}
return result;
};
const tests = [
[
[0, 1, 2, 3, 4, 7, 8, 10],
'0-4, 7-8, 10'
],
[
[4, 7, 10],
'4, 7, 10'
],
[
[2, 3, 8, 9],
'2-3, 8-9'
]
];
const result =
tests.map(([sequence, result]) => {
const testResult = sequenceToRange(sequence);
return {
sequence: sequence.toString(),
result,
testResult,
success: testResult === result
}
});
console.table(result);
})()