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'