c怎么是空???
var a=[1,2,3,4];
var b=[1,2,5,6];
var c;
Array.prototype.filter=function(fn, bind){
var results = [];
for (var i = 0, l = this.length; i < l; i++){
if (fn.call(bind, this[i], i, this)) results.push(this[i]);
}
return results;
}
Array.prototype.each= function(fn, bind){
for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
}
c=a.filter(function(item){
b.each(function(item2){
if (item == item2) 
return true;
})
})

console.log(a,b,c)

解决方案 »

  1.   

    下面这样就行 很是迷惑啊~~
    var a=[1,2,3,4];
    var b=[1,2,5,6];
    var c;
    Array.prototype.filter=function(fn, bind){
    var results = [];
    for (var i = 0, l = this.length; i < l; i++){
    if (fn.call(bind, this[i], i, this)) results.push(this[i]);
    }
    return results;
    }
    Array.prototype.each= function(fn, bind){
    for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
    }
    c=a.filter(function(item){
    //b.each(function(item2){
    for(var i=0;i<4;i++)
    if (item == b[i]) 
    return true;
    //})
    })
      

  2.   

            var a=[1,2,3,4];
            var b=[1,2,5,6];
            var c;
            Array.prototype.filter=function(fn, bind){
    var results = [];
    for (var i = 0, l = this.length; i < l; i++){
                                    //判断的是fn的return值,联系下面的注释
    if (fn.call(bind, this[i], i, this)) results.push(this[i]);
    }
    return results;
            }
            Array.prototype.each= function(fn, bind){
                for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
            }
            c=a.filter(function(item){
    var re = false;
                b.each(function(item2){
                    if (item == item2) 
                        //return true;//在这里return有啥用?这个域并非filter的callback函数的域
                        re =  true;
                })
    return re;//在这里return才有用
            })
    alert(c);