貌似是不断的两两比较,出现断层,就加入标志位隔开!看看如下是否可以:
<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>

解决方案 »

  1.   


    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("一组;")+"一组");
      

  2.   

    忘记了,slice函数了,谢谢,要的就是它。