рони,
у тебя слишком замучено для такой задачи.
как-то так
var a = [6, 7, 8, 14, 15, 16, 20, 21,6, 7, 8, 14, 15, 16, 20, 21],
n = a.length,
b = [],
m = 0;
for (var i = 0, t = a[i]; i < n; i++)
{ if (a[i]+1 == a[i+1]) continue;
else
{ b[m++] = ((t == a[i]) ? '' : (t+' - ')) + a[i];
t = a[i+1];
}
}
alert(b);