JavaScript is not a functional programming language like Lisp or
Haskell, but the fact that JavaScript can manipulate functions as
objects means that we can use functional programming techniques in
JavaScript. The ECMAScript 5 array methods such as `map()`

and `reduce()`

lend themselves particularly well
to a functional programming style. The sections that follow
demonstrate techniques for functional programming in JavaScript. They
are intended as a mind-expanding exploration of the power of
JavaScriptâ€™s functions, not as a prescription for good programming
style.^{[14]}

Suppose we have an array of numbers and we want to compute the mean and standard deviation of those values. We might do that in nonfunctional style like this:

`var`

`data`

`=`

`[`

`1`

`,`

`1`

`,`

`3`

`,`

`5`

`,`

`5`

`];`

`// This is our array of numbers`

`// The mean is the sum of the elements divided by the number of elements`

`var`

`total`

`=`

`0`

`;`

`for`

`(`

`var`

`i`

`=`

`0`

`;`

`i`

`<`

`data`

`.`

`length`

`;`

`i`

`++`

`)`

`total`

`+=`

`data`

`[`

`i`

`];`

`var`

`mean`

`=`

`total`

`/`

`data`

`.`

`length`

`;`

`// The mean of our data is 3`

`// To compute the standard deviation, we first sum the squares of`

`// the deviation of each element from the mean.`

`total`

`=`

`0`

`;`

`for`

`(`

`var`

`i`

`=`

`0`

`;`

`i`

`<`

`data`

`.`

`length`

`;`

`i`

`++`

`)`

`{`

`var`

`deviation`

`=`

`data`

`[`

`i`

`]`

`-`

`mean`

`;`

`total`

`+=`

`deviation`

`*`

`deviation`

`;`

`}`

`var`

`stddev`

`=`

`Math`

`.`

`sqrt`

`(`

`total`

`/`

`(`

`data`

`.`

`length`

`-`

`1`

`));`

`// The standard deviation is 2`

We can perform these same computations in concise functional
style using the array methods `map()`

and `reduce()`

like this (see ECMAScript 5 Array Methods

Start Free Trial

No credit card required