zoukankan      html  css  js  c++  java
  • Pointfree Javascript: Pointfree编程风格

    过程式编码是这样的:

    var getAdminUsers = users => {
      var emails = []
      users.forEach(v=>{
        v.role==='admin' && emails.push(v.email)
      })
      return emails
    }

    易读的方式重写:

    let getAdminEmails = users =>
        users
          .filter(u => u.role === 'admin')
          .map(u => u.email);

    Pointfree :

    var prop = p => x => x[p];
    
    var map = f => list =>
      list.map(f);
    var propEq = v => p => obj =>
      prop(p)(obj) === v;
    
    var filter = f => list =>
      list.filter(f);

    pipe函数:

    const pipe = (...args) => x=> args.reduce((ini, fn)=> fn(ini), x)

    下面开始放大招:

    var getAdminEmails = pipe(
      filter(
          propEq('admin')('role')),
      map( prop('email')));

    以后就可以这样愉快地调用了:

    var arr = [{role: 'admin', email: 'suibdkhgigh'}]
    getAdminEmails(arr) //["suibdkhgigh"]
  • 相关阅读:
    $dp$模板
    字符串基础
    基础算法

    图论
    山中无甲子,寒尽不知年
    模板集合(持续更新)
    数学基础——同余
    9.19 考试总结
    1-5-17:菲波那契数列
  • 原文地址:https://www.cnblogs.com/dodocie/p/10244597.html
Copyright © 2011-2022 走看看