@Peter & Harbs: I suppose the page_ranges function takes only arrays of well prepared numbers: sorted and single standing doubles eliminated when using tolerance 0. See the following tests I did: //TESTS: var a = [1,1,10,10,11,11,11,11,11,14,15,16,222,222,223,289]; $.writeln("Tolerance: 0\t" + page_ranges (a, {tolerance: 0, dash: "-"})); //Returns: 1-1,10-10,11-11,14,15,16,222-222,223,289 $.writeln("Tolerance: 1\t" + page_ranges (a, {tolerance: 1, dash: "-"})); //Returns: 1-1,10-11,14-16,222-223,289 $.writeln("Tolerance: 3\t" + page_ranges (a, {tolerance: 3, dash: "-"})); //Returns: 1-1,10-16,222-223,289 function page_ranges (array, obj) { obj = obj || {}; var temp = []; var range = false; var tolerance = obj.tolerance || 0; var dash = obj.dash || "-"; for (var i = 0; i < array.length; i++) { temp.push (array); while (array[i+1] - array <= tolerance) {i++; range = true} if (range){ temp[temp.length-1] += dash + array; } range = false; } return temp; } Seems array[0] should get a special treatment when it's contents is not part of a range and it is doubled… Uwe
... View more