# Re-writing Built-in Reduce Functions

- concept

Using this model as a template, it is possible to write the full implementation of the built-in functions `_sum`

and `_count`

when working with the sales data and the standard `map()`

function below:

function(doc, meta) { emit(meta.id, null); }

The `_count`

function returns a count of all the records for a given key.
Since argument for the reduce function contains an array of all the values for a given key, the length of the array needs to be returned in the `reduce()`

function:

function(key, values, rereduce) { if (rereduce) { var result = 0; for (var i = 0; i < values.length; i++) { result += values[i]; } return result; } else { return values.length; } }

To explicitly write the equivalent of the built-in `_sum`

reduce function, the sum of supplied array of values needs to be returned:

function(key, values, rereduce) { var sum = 0; for(i=0; i < values.length; i++) { sum = sum + values[i]; } return(sum); }

In the above function, the array of data values is iterated over and added up, with the final value being returned.