JSFiddle - React, Tailwind, and code Playground
by Saurabh Khemka
JavaScript
function stringifyNumberRuns(arr) {
let res = arr[0].toString();
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] - arr[i] > 1) {
if (arr[i + 1] !== undefined) {
res += ',' + arr[i + 1];
}
} else {
if (arr[i + 2] - arr[i + 1] === 1) {
if (arr[i + 2] !== undefined) {
res += ':' + arr[i + 2];
i = i + 1;
}
} else {
if (arr[i + 1] !== undefined) {
res += ':' + arr[i + 1];
}
}
}
}
return res;
}
console.log(stringifyNumberRuns([1])) //=> '1'
console.log(stringifyNumberRuns([1, 3])) //=> '1,3'
console.log(stringifyNumberRuns([1, 2])) //=> '1:2'
console.log(stringifyNumberRuns([1, 2, 3])) //=> '1:3'
console.log(stringifyNumberRuns([0, 2, 3, 4, 6, 7, 9])) //=> '0,2:4,6:7,9'