zoukankan      html  css  js  c++  java
  • 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还是很重要的,我们不单单是要学会怎么用,还要搞清楚内部是如何实现,之前我对数组的这些方法也不是很清楚,只用到了其中的一部分,现在通过总结可以加深对他们的理解。

  • 相关阅读:
    创建线程方法&守护线程
    可见性
    线程池
    Callable创建线程
    使用java读取excel数据
    shell 中的操作符
    shell 中的特殊变量
    shell 变量定义使用
    golang 解码未知键的 json 字符串
    golang json 编码解码
  • 原文地址:https://www.cnblogs.com/shentao11023/p/10974980.html
Copyright © 2011-2022 走看看