数组里都是数字,如何把连续数字提取成一个数组,数组里只包含起始数字和结束数字比如
var a = [1,2,3,4,7,8,10,22,23,24];
经过转化变成
var b = [[1,4], [7,8], 10, [22,24]]

解决方案 »

  1.   

    L@_@K
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> new document </title>
      <meta name="generator" content="editplus" />
      <meta name="author" content="" />
      <meta name="keywords" content="" />
      <meta name="description" content="" />
     </head> <body>
      <script type="text/javascript">
      <!--
    var a = [1,2,3,4,7,8,10,22,23,24]; 
    var b = new Array();var staEle, endEle;
    var increment;
    for (var i=0; i<a.length; i++)
    {
    staEle = a[i];
    endEle = null; if (i < (a.length-1))
    {
    increment = 0;
    do
    {
    increment++;
    endEle = a[i + increment];
    }
    while (endEle == (staEle + increment)); if (--increment > 0)
    b.push([staEle, a[i + increment]])
    else
    b.push(staEle);

    i += increment;
    }
    }
    // [[1,4], [7,8], 10, [22,24]]
    for (var i in b)
    {
    document.write(b[i], "<br />");
    }
      //-->
      </script>
     </body>
    </html>
      

  2.   

    <script>
    var a = [1,2,3,4,7,8,10,22,23,24]; 
    var narr = [];
    for(var tmp=[a[0]], i=1; i<=a.length; i++){
    if(a[i-1]+1==a[i]){
    tmp[1] = a[i];
    }else{
    narr.push(tmp);
    tmp = [a[i]];
    }
    }alert(narr.join('\n'));
    </script>
      

  3.   


    function merge(){
     var a = [1,2,3,4,7,8,10,22,23,24];
     var b = [];
     for(var start=a[0], i=0;i<a.length;i++){
        if(a[i+1]-a[i]==1){
            var end = a[i+1];
         }else{       
            if(end!=a[i+1]){
               b.push([start,end]);
            }else{
               b.push(start);
            }
               start = a[i+1];
               end = null;
         }
      }
      return b;
    }