st1和st2是两个二维数组(实际上是操作从Excel来的数据),从文本取得text后通过两次split得到。a和b代表st1的第a列和st2的第b列(都从0起算)。另建两个数组st1a和st2a,分别用来存取st1中a列与st2中b列相同元素对应的行,以及类似的st1b和st2b,分别用来存放剩余部分。
关键部分代码如下(有几个alert是调试用的,不用理会):
===========
var st1=$("#Textarea1").val().split(/\n/g);
var st2=$("#Textarea2").val().split(/\n/g);
for(var i=0; i<st1.length; i++) {st1[i]=st1[i].split(/\t/g);}
for(var i=0; i<st2.length; i++) {st2[i]=st2[i].split(/\t/g);}
var a=0;//The column No. for alighment;
var b=3;
var st1a=new Array();
var st1b=new Array();
var st2a=new Array();
var st2b=new Array();
var sta=new Array();
st1b=st1;
st2b=st2;
for (var i=0; i<st1.length; i++){
for (var j=0; j<st2.length; j++){
st1[i][a]=st1[i][a].replace(/(^\s*)|(\s*$)/g,"");
alert(i+" "+j+" ");
alert(st2[j]);
st2[j][b]=st2[j][b].replace(/(^\s*)|(\s*$)/g,"");
alert(st2);
if(st1[i][a]==st2[j][b]){
st1a[st1a.length]=st1[i];//将st1的第i行存入st1a
st1b.splice(i,1,"@#@");//把st1b第i行的数组改为字串“@#@”留以后剔除;
st2a[st2a.length]=st2[j];//将st2的第j行存入st2a
st2b.splice(j,1,"@#@");//把st2b的第j行的数组改为字串“@#@”留以后剔除;
alert(st2);//以上4行操作都没有修改st2,可是通过这个alert可以发现st2的第一行居然在第一次循环后变成“@#@”了!!!见鬼!
break; //Cease j loop and go to next i loop;
}
}
}
===========
谁能解释一下上面的“见鬼”处?
--
修改:cowell FROM 134.134.137.*
FROM 134.134.137.*