This is a great read. Thanks for sharing.
map, reduce and filter are awesome, but you need to be cognizant of the cost. For example, in your Yen example, in a worst case scenario (all "food"), you will iterate the array 3 times to get the total cost. In the for loop, you achieve the same result in one loop through the array. Not a big deal for small data sets, but something to be aware of. Some people will tell you to use a reduce and do all the work in that reduce method, but that can become a mess too. It is important to realize what tools are useful in what scenarios.
That being said, you can achieve a nice functional approach with map, filter and reduce using a good library like ramda. With ramda, you can set up pipelines that are evaluated all the way to the result. Other nice benefits of ramda are the automatic currying and partial application.