在网上copy了一段数组比较的代码 为什么我运行会出现这样的结果呢?
function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)return this},function{}}....
11,12
高手解释一下啊
function f(){
        var a=['1','11','12'];
        var b=['1'];
        var aDiff =[];
var aSame =[];
var bIsChk = false;
    var str = b.join("");
    for(var e in a){
        if(str.indexOf(a[e]) == -1)
        {
            aDiff.push(a[e]);
        }
        else
        {
            if(!bIsChk)aSame.push(a[e]);
        }
    }
    bIsChk = true;
      alert(aDiff);
    }

解决方案 »

  1.   

    //将两个数组的不同元素保存在一个新的数组中.
    function f(){ 
            var a=['1','11','12'];  //用于比较的数组a
            var b=['1']; //用于比较的数组b
            var aDiff =[];  //用于存放不同元素的新数组
    var aSame =[]; //用于存放相同元素的新数组
    var bIsChk = false; 
        var str = b.join("");  //将b转换成以""分割的字符串
        for(var e in a){  //遍历a 
            if(str.indexOf(a[e]) == -1)  //如果str可不存在a中的某个元素
            { 
                aDiff.push(a[e]);  //将该元素push到aDiff中
            } 
            else 
            { 
                if(!bIsChk)aSame.push(a[e]); //将元素push到aSame中
            } 
        } 
        bIsChk = true; 
          alert(aDiff);  //输出不同元素新数组,所以值为 11,12
        }
      

  2.   

    IE7 alert的结果是++++++++++++++++++++++
    function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)return this},function{}}.... 
    11,12 

    ++++++++++++++++++++++
      

  3.   

    function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)return this},function{}}.... 怎么会出现这么一串函数呢
      

  4.   

    我IE7,alert出11,12,没有出现你的现象!
      

  5.   

    for in 语句
    和for()循环语句 不一样。还是用for()循环吧都给分了
      

  6.   

    for (var e=0; e<a.length; e++) 
    不要用 
    for (var e in a)