为了账号安全,请及时绑定邮箱和手机立即绑定

删除数据中的假值

删除数据中的假值

西瓜妈妈 2017-11-02 21:23:51
function bouncer(arr) {    return arr.filter(function(a){     return Boolean(a) !== false;   }); }我不知道为什么a不需要声明下是arr里的数据?
查看完整描述

1 回答

已采纳
?
kevinZee

TA贡献50条经验 获得超39个赞

//首先将myFilter方法添加在数组的原型之上,达到和filter,sort等方法在任意数组实例上调用的效果
//这个callback就是你在调用myFilter这个方法的时候传进去的函数
Array.prototype.myFilter = function (callback) {
    //定义一个空数组用于返回结果数组
    var array = [];
    //遍历当前的数组实例,也就是this
    for (var i = 0; i < this.length; i++) {
        //执行callback,将本次循环的数组的元素,当前元素的下标和数组实例本身作为参数传给callback
        //callback需要返回一个布尔值
        if (callback(this[i],i,this)) {
            //当callback执行结果为真时,表明当前元素符合条件
            //将当前的这个数组元素添加进结果数组
            array.push(this[i]);
        }
    }
    //返回结果数组
    return array;
}

//创建一个数组实例testArr
var testArr = [1,2,3,4,5,6];
//调用myFilter方法,并传入一个函数
testArr.myFilter(function(a){
    //这个函数的形参a其实就是数组的一项
    //你可以看上面的myFilter的具体实现,因为myFilter调用后,会遍历调用myFilter的数组实例
    //那么在每一次循环的过程中,都会将数组的当前一项作为参数传递给当前函数
    //则此函数执行的结果是真是假,就会影响结果数组的元素
    return a>3;
})

因为这个a是这个回调函数的参数,上面我写了一个简单的myFilter方法实现了类似filter的功能

这个函数在执行循环的时候,会调用这个callback,并将当前的数组项传入

查看完整回答
反对 回复 2017-11-02
  • 西瓜妈妈
    西瓜妈妈
    不好意思,我底子太差,看不懂这个,请问能在里面多加点注释么,或者看什么课程会明白呢?
  • kevinZee
    kevinZee
    我重新添加了注释,但可能表达得不是很清楚。你可以百度 js的回调函数 ,看看相关的文章,从简单的用法看起
  • 西瓜妈妈
    西瓜妈妈
    非常感谢,非常感谢
  • 1 回答
  • 0 关注
  • 1056 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信