# reduce-object [![NPM version](https://badge.fury.io/js/reduce-object.svg)](http://badge.fury.io/js/reduce-object) > Reduces an object to a value that is the accumulated result of running each property in the object through a callback. ## Install #### Install with [npm](npmjs.org): ```bash npm i reduce-object --save ``` ## Run tests ```bash npm test ``` ## Usage Executes the callback function once for each own enumerable property in the object, receiving four arguments: - `acc`: the initial value (or value from the previous callback call), - `value`: the of the current property, - `key`: the of the current property, and - the original `object` over which the function is iterating. ```js var reduce = require('reduce-object'); var a = {a: 'foo', b: 'bar', c: {}}; var obj = reduce(a, function (acc, value, key, orig) { if (typeof value === 'object') { acc[key] = {what: 'huh?'}; } else { acc[key] = value.toUpperCase(); // why? } return acc; }, {}); console.log(obj); //=> {a: 'FOO', b: 'BAR', c: {what: 'huh?'}}; ``` ## Author **Jon Schlinkert** + [github/jonschlinkert](https://github.com/jonschlinkert) + [twitter/jonschlinkert](http://twitter.com/jonschlinkert) ## License Copyright (c) 2014 Jon Schlinkert, contributors. Released under the MIT license *** _This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on September 20, 2014._