Skip to content

Instantly share code, notes, and snippets.

@sebmck
Created March 23, 2012 07:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebmck/2167969 to your computer and use it in GitHub Desktop.
Save sebmck/2167969 to your computer and use it in GitHub Desktop.
function rangify(list){
list = list.map(Number).sort(function(a, b){ return a - b; });
list.push(0);
var adder, i, list, number, rangeStart, ranges, _fn, _len;
ranges = [];
rangeStart = list[0];
adder = 0;
_fn = function(number) {
if (number !== adder + 1 || i === list.length - 1) {
ranges.push((rangeStart === adder) && ("" + adder) || ("" + rangeStart + "-" + adder));
rangeStart = number;
}
return adder = number;
};
for (i = 0, _len = list.length; i < _len; i++) {
number = list[i];
_fn(number);
}
return ranges.slice(1);
}
rangify('1,2,3,8,9,12,15,17,18,19,20,21,22,23'.split(',')).join(',');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment