# reduce function

I hope this code on how to understand the `reduce` function in JavaScript is is self-explanatory.

```javascript
var desks = [
  { type: 'sitting' },
  { type: 'standing' },
  { type: 'sitting' },
  { type: 'sitting' },
  { type: 'standing' }
];

var deskTypes = desks.reduce(function(d, desk)
{   
    d[desk.type]++;    
    return d;
}, { sitting: 0, standing: 0 });

console.log(deskTypes);
```

We are initializing **deskTypes** to `{ sitting: 0, standing: 0 }` just before going through the reduce function.

`d` gets returned in the function which gets updated to `deskTypes` while `desk` is each value of `desks` in the loop.

```javascript
 node trips.js 
{ sitting: 3, standing: 2 }
```

This works in IE9-IE11 too.

UPDATE : Another common use-case for `reduce` :

```javascript
let shoes = [
    { id:205, name:'reebok', price:50 },
    { id:206, name:'adidas', price:45 },
    { id:207, name:'nike', price:150 },
    { id:208, name:'clarks', price:95 },
    { id:209, name:'bata', price:30 },
];

console.log(shoes.reduce((n, {price}) => n + price, 0));
```

Will output 370 because 50+45+150+95+30=370
