Functional Programming
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]
Processing Arrays with Functions
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 to ...
Get JavaScript: The Definitive Guide, 6th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.