zoukankan      html  css  js  c++  java
  • 使用高阶函数实现Array对象的方法

     

    Array 原型上有很多数组的方法。例如 map, every, some,filter,forEach等,今天我们就使用高阶函数来mock以上的功能。 以上方法怎么使用,就不再举例说明了,大家应该都用的滚瓜烂熟了。常用的使用模式都是这样的。

    [1,2,3,4,5].forEach((item, index) => {
         console.log(item)
    })
    

    那么什么是高阶函数呢?大家都知道,在JS的世界里,函数是一等公民,函数既可以做参数,也可以做函数的返回值,跟普通的变量没有区别。例如:

    function add (fn) {
      return fn
    }
    

    大概解释清楚概念后,我们就使用高阶函数的理念,分别通过原生的JS来实现以上数组的几种方法:

    • forEach
    function forEach (array, fn) {
        for(let i = 0; i< array.length; i++) {
            fn(array[i],i)
        }
    }
    
    forEach([1,2,3,4], (item, i) => {
        console.log(item)
    })
    
    • filter
    function filter(array, fn) {
        let _arr = []
        for(let i = 0; i< array.length; i++) {
             if(fn(array[i],i)) {
                 _arr.push(array[i])
             }
        }
        return _arr
    }
    
    let cc = filter([2,3,4,4,5,5,6,6], (item, i) => {
        return item % 2 === 0
    })
    
    console.log(cc);
    
    • some
    function some (array, fn) {
        let flag = false
        for(let i = 0; i< array.length; i++) {
            if ((fn(array[i],i))) {
                flag = true
                break
            }  
       }
       return flag
    }
    
    let dd = some([1,2,4,4,4,5], (item) => {
        return item > 3
    })
    
    
    • every
    function every(array, fn) {
        let flag = true
        for(let i = 0; i< array.length; i++) {
            if (!(fn(array[i],i))) {
                flag = false
                break
            }  
       }
       return flag
    }
    
    let ff = every([1,2,4,4,4,5], (item) => {
        return item > 0
    })
    
    • map
    function map (array, fn) {
        let _arr = []
        for(let i = 0; i< array.length; i++) { 
            _arr.push(fn(array[i], i))
        }
        return _arr
    }
    
    let ee = [1,2,3,4].map(item => {
        return item * 2
    })
  • 相关阅读:
    自己定义Actionbar
    创建自己的Repo Server
    AI案例
    贝叶斯定理,从白袜到飞机失事再到人工智能
    jupyter notebook 安装代码提示功能
    Jupyter notebook 自动补全
    27 个Jupyter Notebook的小提示与技巧
    Windows下的Jupyter Notebook 安装与自定义启动
    以太坊联盟链 parity 节点搭建
    ubuntu上面Parity 安装
  • 原文地址:https://www.cnblogs.com/ndh074512/p/14949892.html
Copyright © 2011-2022 走看看