ES5数组一些常用的方法源码实现

            //forEach源码实现
            Array.prototype.customeForEach = function (func, thisValue) {
                var arr = this;
                for (var i = 0; i < arr.length; i++) {
                    func.call(thisValue, arr[i], i, arr);
                }
            }
            //some源码实现
            Array.prototype.customeSome = function (func, thisValue) {
                var arr = this;
                var state = false;
                for (var i = 0; i < arr.length; i++) {
                    var val = func.call(thisValue, arr[i], i, arr);
                    if (val) {
                        state = true;
                        break;
                    }
                }
                return state;
            }
            //reduce源码实现
            Array.prototype.customeReduce = function (func, thisValue) {
                var arr = this;
                var total = thisValue ? thisValue : arr[0];
                for (var i = thisValue ? 0 : 1; i < arr.length; i++) {
                    total = func(total, arr[i], i);
                }
                return total;
            }
            //filter源码实现
            Array.prototype.customeFilter = function (func, thisValue) {
                var arr = this;
                var result=[];
                for (var i = 0; i < arr.length; i++) {
                    var val = func.call(thisValue, arr[i], i, arr);
                    if(val){
                         result.push(arr[i])
                    }
                }
                return result;
            }
            //map源码实现
            Array.prototype.customeMap=function(func, thisValue){
                var arr = this;
                var result=[];
                for (var i = 0; i < arr.length; i++) {
                    var val = func.call(thisValue, arr[i], i, arr);
                    result.push(val);
                }
                return result;
            }
            //every源码实现
            Array.prototype.customeEvery=function(func,thisValue){
                var arr = this;
                var state = true;
                for (var i = 0; i < arr.length; i++) {
                    var val = func.call(thisValue, arr[i], i, arr);
                    if (!val) {
                        state = false;
                        break;
                    }
                }
                return state;
            }

源码的学习对于提升js还是很重要的,我们不单单是要学会怎么用,还要搞清楚内部是如何实现,之前我对数组的这些方法也不是很清楚,只用到了其中的一部分,现在通过总结可以加深对他们的理解。

转载于:https://www.cnblogs.com/shentao11023/p/10974980.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值