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

2018-08-08  本文已影响0人  IFELSE

使用函数处理数组

先看一个求平均值的例子,标准差的计算公式是: 标准差公式
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
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是一个高阶函数,它的作用是生成一个新函数,新函数的计算结果总与传入函数的结果相反。

上一篇 下一篇

猜你喜欢

热点阅读