Due to the functional design of d3.js, we have to start thinking of our code and data with a functional mindset.
The good news is that JavaScript almost counts as a functional language; there are enough features to get the benefits of a functional style, and also provides enough freedom to do things imperatively or in an object-oriented way. The bad news is that, unlike real functional languages, the environment gives no guarantee about our code.
In this section, we'll go through the basics of functional-style coding and look at wrangling the data so that it's easier to work with. If you want to try proper functional programming, I suggest looking at Haskell and Learn You a Haskell for Great Good available at http://learnyouahaskell.com/.
The idea behind functional programming is simple—compute by relying only on function arguments. Simple, but the consequences are far reaching.
The biggest consequence is that we don't have to rely on state, which in turn gives...