原生JS实现filter()方法

定义:

Array.prototype.filter()

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 

参数:

callback

用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。它接受以下三个参数:

element

数组中当前正在处理的元素。

index可选

正在处理的元素在数组中的索引。

array可选

调用了 filter 的数组本身。

thisArg可选

执行 callback 时,用于 this 的值。

<script>
        // Array.prototype.myFilter(),效果等同于Array.prototype.filter()
        arr = [1,2,3,4,5,6,6,7,8,9,10];
        var result1 = arr.filter(function(val,index,arr){
            return index===0;
        });
        var result3 = arr.filter(function(val){
            return val>3;
        });
        console.log(result1);
        console.log(result3);
        console.log("---------myFilter()----------");

        Array.prototype.myFilter = function(callback){
            var newArr = [];
            for(var i = 0; i < this.length; i++) {
                if(callback(this[i],i,this)) {
                    newArr.push(this[i])
                }
            }
            return newArr;
        }

        var result2 = arr.myFilter(function(val,index,arr){
            return index===0;
        });
        var result4 = arr.myFilter(function(val){
            return val>3;
        });
        console.log(result2);
        console.log(result4);
    </script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值