一个表格有两列:第一列是开始数,第二列是结束数,有什么办法判断用户录入的数据是否有误,如果各行之间存在交叉重叠,则报错:
如下就有错,因为第1行和第2行存在重叠。
Start End
1 10
2 11
12 15如下则是正确的:
Start End
1 10
11 15
20 50
如下就有错,因为第1行和第2行存在重叠。
Start End
1 10
2 11
12 15如下则是正确的:
Start End
1 10
11 15
20 50
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中就可以验证了啊
如
Start End
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('数据合法!');
var arr = [1,4,10,11,12,15]
for(var i = 0; i < arr.length-1 ; i++){
if(arr[i] > arr[i+1]){alert("不对"); }
}这样行么 ?
<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>
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;
}
}
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;
}
}