一个表格有两列:第一列是开始数,第二列是结束数,有什么办法判断用户录入的数据是否有误,如果各行之间存在交叉重叠,则报错:
如下就有错,因为第1行和第2行存在重叠。
Start   End
1       10
2       11
12      15如下则是正确的:
Start   End
1       10
11      15
20      50

解决方案 »

  1.   

    var a = [1,2,12];
    var b = [10,11,15];
    for(var i = 0 ; i < a.length-1; i ++)
    {
        if(a[i]+b[i+1]==a[i+1]+b[i])
        {
           alert("有错误");
        }
    }
    将start列的值放入数组 a中
    将end列的值放数数组b中就可以验证了啊
      

  2.   

    思路很好,但还是有缺陷,

    Start End
    1 10
    4 11
    12 15
    这种情况也是有问题,但按上述方式是检查不出来的。
      

  3.   

    var ar = [[1,10],[4,11],[12,15]];
    var FLAG = false;
    OUTERMOST:
    for(var i = 1; i < ar.length; i ++) {
        for(var j = 0; j < i; j ++) {
            if (ar[i][0] >= ar[j][0] && ar[i][0] <= ar[j][1]) {
                FLAG = true;
                break OUTERMOST;
            }
        }
    }
    if (FLAG) alert('输入数据非法');
    else alert('数据合法!');
      

  4.   


    var  arr = [1,4,10,11,12,15]
                for(var i = 0; i < arr.length-1 ; i++){
                   if(arr[i] > arr[i+1]){alert("不对"); }
                }这样行么 ?
      

  5.   


    <script type="text/javascript">
    var ar = [[10,100],[90,150],[160,180]];
    var FLAG = false;
    OUTERMOST:
    for(var i = 1; i < ar.length; i ++) {
        for(var j = 0; j < i; j ++) {
            if (ar[i][0] >= ar[j][0] && ar[i][0] <= ar[j][1]) {
                FLAG = true;
                break OUTERMOST;
            }
           else if(ar[i][0] <= ar[j][0] && ar[i][1] >= ar[j][0]) {
                FLAG = true;
                break OUTERMOST;
            }
        }
    }
    if (FLAG) alert('输入数据非法');
    else alert('数据合法!');
    </script>
      

  6.   

    结合插入排序法,一边排序一边比较var arr = [[1,10],[11,20],[21,30],[13,25]];
    for (i=1; i<arr.length; i++){
        tmp = arr[i];
        for (j=i; j>0 && arr[j-1][1] > tmp[1]; j--) {
            if ( arr[j-1][1] > tmp[0] ) {
                alert('Err:'+tmp);
                return;
            }
            arr[j]=arr[j-1];
            arr[j-1]=tmp;
        }
    }
      

  7.   

    刚刚思维不够严谨,有bug,修正一下:var arr = [[1,10],[11,20],[13,25],[21,30]];
    for (i=1; i<arr.length; i++){
        tmp = arr[i];
        for (j=i; j>0; j--) {
            if ( arr[j-1][1] > tmp[0] ) {
                alert('Err:'+tmp);
                return;
            }
            if (arr[j-1][1] < tmp[1]) break;
            arr[j]=arr[j-1];
            arr[j-1]=tmp;
        }
    }