Javascript学习笔记——8.8 函数式编程

使用函数处理数组

先看一个求平均值的例子,标准差的计算公式是:
标准差公式
  • 用循环的写法
var data = [1,3,7,11,22,55]
var total = 0
for(var i=0;i<data.length;i++)
    total = total+data[i]
var average = total/data.length
total = 0
for(i=0;i<data.length;i++){
    total = total+(data[i]-average)*(data[i]-average)
}
var stddev = Math.sqrt(total/(data.length-1))
console.log(stddev) //20.275601100830524
  • 使用map和reduce
var data = [1,3,7,11,22,55]
var add = function(a,b){return a+b}
var average = data.reduce(add)/data.length
var fun = function(x){return (x-average)*(x-average)}
var total = data.map(fun).reduce(add)
var stddev = Math.sqrt(total/(data.length-1))
console.log(stddev) //20.275601100830524

高阶函数

所谓高阶函数,就是操作函数的函数,它接受一个或多个函数作为参数,并返回一个新函数。

function not(f){
    return function(){
        var result = f.apply(this,arguments)
        return !result
    }
}
var even = function(x){
    return x%2===0
}
var odd = not(even)
var a = [1,3,4,7,9,12]
a.every(odd) //false
odd(5) //true

not是一个高阶函数,它的作用是生成一个新函数,新函数的计算结果总与传入函数的结果相反。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,679评论 0 5
  • JavaScript,通常缩写为 JS,是一种解释执行的编程语言。它是现在最流行的脚本语言之一。 JavaScri...
    神齐阅读 5,029评论 1 32
  • 没想到这么快就第五篇日记了,我还以为要很久呢。今天早上姥爷给我做了炒鸡蛋,但是我没有吃很多,因为最近几天我...
    n宁n阅读 195评论 0 2
  • 地理与世界霸权 作者:(英) 詹姆斯·菲尔格里夫 出版社:上海人民出版社 译者:龚权 出版年:2016-8-1 如...
    陈藤予阅读 819评论 0 3
  • 直接远程调试服务器上的代码和虚拟环境还是比较方便的,因为有时候在本地mac os 下安装一些依赖包的时候总会莫名其...
    镜kong阅读 1,328评论 0 1