zoukankan      html  css  js  c++  java
  • 函数式编程---小记

    高阶函数(HOC)

      js中函数可以被赋值、当作参数进行传递、被其他函数返回,在js中函数就是一等公民。

      高阶函数: 接收函数、返回函数

    // 数组的筛选
    const arr = [1,2,3,4,5]
    
    // 一般实现
    let newArr = []
    for (let i = 0; i < arr.length; i++){
      if (arr[i] > 2) {
         newArr.push(arr[i])
      }
    }
    
    // 使用filter
    arr.filter(item => item> 2)

    函数的柯里化与偏应用

      柯里化: 将多参数的函数转化为可以多次调用的函数

      const curry = function (fn) {
        if (typeof fn !== 'function') {
          throw new Error('参数必须为function')
        }
        return function curryFn (...args) {
          if (args.length < fn.length) {
            return function () {
              return curryFn.apply(null, args.concat([].slice.call(arguments)))
            }
          }
          return fn.apply(null, args)
        }
      }

      偏应用:预先给点参数,调用的时候再传其余的

      const partial = function (fn, ...args) {
        return function (...innerArgs) {
          let index = 0
          for (let i = 0; i < args.length && innerArgs.length; i++) {
            if (args[i] === undefined) {
              args[i] = innerArgs[index++]
            }
          }
          return fn.apply(null, args)
        }
      }

    函数的组合

      多个函数一起按照管道的顺序完成事情。

    // compse函数
      const compose = function (...args) {
        return function (val) {
          return args.reduce.call(args.reverse(), function(cur, fn) {
            return fn(cur)
          }, val)
        }
      }

     

  • 相关阅读:
    机器学习之大数据集
    机器学习之协同过滤算法(推荐系统)
    机器学习之异常检测
    机器学习之PCA主成分分析
    机器学习之K-means算法
    机器学习之SVM支持向量机
    机器学习之模型选择与改进
    springmvc spring mybatis插入mysql中文乱码
    springmvc和http404错误
    oracle删除users表空间
  • 原文地址:https://www.cnblogs.com/wjyz/p/14667658.html
Copyright © 2011-2022 走看看