<script language = 'javascript'>var a=[];
var b =[];for(var i=0;i<10000;i++){
a.push(i+1);
b.push(i+2);
}var aDiff = [];
var aSame = [];// sort 是按 ascii 排序,而不是数字大小,
// 所以下面一样的排 ascii ...
a.sort();
b.sort();var ak = 0;
var bk = 0;while(1){ if( ak>=a.length && bk>=b.length){ // a,b 都越界,对比结束
break;
}else if( ak>=a.length || bk>=b.length){ // a | b 越界, aDiff 为未越界的项
if(ak<a.length){
aDiff.push(a[ak]);
ak++;
}else{
aDiff.push(b[bk]);
bk++;
}
}else{ //a, b 都没越界,对比两个 ascii 的大小:
var na = [a[ak],b[bk]];
na.sort(); if(a[ak]==b[bk]){
aSame.push(a[ak]);
ak++;
bk++;
}
else if(a[ak]==na[0]){
aDiff.push(a[ak]);
ak++;
}else{
aDiff.push(b[bk]);
bk++;
}
}}alert("Same: "+aSame);
alert("Diff: "+aDiff);
</script>
var b =[];for(var i=0;i<10000;i++){
a.push(i+1);
b.push(i+2);
}var aDiff = [];
var aSame = [];// sort 是按 ascii 排序,而不是数字大小,
// 所以下面一样的排 ascii ...
a.sort();
b.sort();var ak = 0;
var bk = 0;while(1){ if( ak>=a.length && bk>=b.length){ // a,b 都越界,对比结束
break;
}else if( ak>=a.length || bk>=b.length){ // a | b 越界, aDiff 为未越界的项
if(ak<a.length){
aDiff.push(a[ak]);
ak++;
}else{
aDiff.push(b[bk]);
bk++;
}
}else{ //a, b 都没越界,对比两个 ascii 的大小:
var na = [a[ak],b[bk]];
na.sort(); if(a[ak]==b[bk]){
aSame.push(a[ak]);
ak++;
bk++;
}
else if(a[ak]==na[0]){
aDiff.push(a[ak]);
ak++;
}else{
aDiff.push(b[bk]);
bk++;
}
}}alert("Same: "+aSame);
alert("Diff: "+aDiff);
</script>
不过可以用一些其它的方法.
比如说hash什么的.<script type="text/javascript">
var i;
var a = [], b = [];
for (i = 0 ; i < 10000 ; i ++)
a[i] = Math.ceil(1000 * 9000 * Math.random());
for (i = 0 ; i < 10000 ; i ++)
b[i] = Math.ceil(1000 * 9000 * Math.random());var a = [1000,2000,1,2,3];
var b = [1000,2000,4];var ca = a.slice(0);
var cb = b.slice(0)
var Hash = {}
var aDiff = [];
var aSame = [];var v = {};var d = new Date;while (a.length > 0) {
t = a.pop();
if (!Hash[t]) Hash[t] = 1;
}while (b.length > 0) {
t = b.pop()
if (!v[t]) {
v[t] = 1;
if (Hash[t]) {
aSame[aSame.length] = t;
delete Hash[t];
} else {
aDiff[aDiff.length] = t;
}
}
}for (t in Hash) {
aDiff[aDiff.length] = t;
delete Hash[t];
}alert(new Date() - d);document.write(
"a数组:", ca, "<br />b数组:", cb, "<br /><br />"
, "相同:", aSame, "<br />不同:", aDiff
);
</script>
a[i] = Math.ceil(1000 * 9000 * Math.random());
b[i] = Math.ceil(1000 * 9000 * Math.random());
}
//var a = [1000,2000,1,2,3];
//var b = [1000,2000,4];
简化下..:D