貌似是不断的两两比较,出现断层,就加入标志位隔开!看看如下是否可以:
<script type="text/javascript"> var a="1,2,3,5,6,7,9,11,12";
var temp=a.split(',');
var stringA="";
for(var i=0;i<temp.length;i++)
{
if ((i + 1) <= temp.length) {
if ((parseInt(temp[i]) + 1) == parseInt(temp[i + 1])) {
//说明没有断层。
stringA += temp[i] + ",";
}
else {
//说明断层了。此时,加入标志。
stringA += temp[i] + "|";
}
} }
stringA = stringA.substring(0, stringA.length - 1);
</script>
<script type="text/javascript"> var a="1,2,3,5,6,7,9,11,12";
var temp=a.split(',');
var stringA="";
for(var i=0;i<temp.length;i++)
{
if ((i + 1) <= temp.length) {
if ((parseInt(temp[i]) + 1) == parseInt(temp[i + 1])) {
//说明没有断层。
stringA += temp[i] + ",";
}
else {
//说明断层了。此时,加入标志。
stringA += temp[i] + "|";
}
} }
stringA = stringA.substring(0, stringA.length - 1);
</script>
var a="1,2,3,5,6,7,9,11,12";
b=a.split(",");
var c=new Array();//用来放你要的数组c[0]1,2,3;c[1]5,6,7;c[2]9;c[3]11,12
var im=0
for(var i=0,j=b.sort(function(a,b){return a-b}).length;i<j;i++)
{
if(i>0&&parseInt(b[i])!=parseInt(b[i-1])+1)
{c.push(b.slice(im,i));im=i}}
c.push(b.slice(im,b.length))
alert(c.join("一组;")+"一组");