# mapValues
> Map values from one object to a new object having the same keys.
## Usage
```javascript
var mapValues = require( '@stdlib/utils/map-values' );
```
#### mapValues( obj, transform )
Map values from one `object` to a new `object` having the same keys.
```javascript
function transform( value, key ) {
return key + value;
}
var obj1 = {
'a': 1,
'b': 2
};
var obj2 = mapValues( obj1, transform );
// returns { 'a': 'a1', 'b': 'b2' }
```
The `transform` function is provided three arguments:
- `value`: object value corresponding to `key`
- `key`: object key
- `obj`: the input object
## Notes
- Key iteration order is **not** guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic return values.
- The function only maps values assigned to **own** properties. Hence, the function does **not** map values for inherited properties.
- The function **shallow** copies key values.
## Examples
```javascript
var mapValues = require( '@stdlib/utils/map-values' );
function transform( value, key ) {
return key + ':' + value;
}
var obj1 = {
'a': 'beep',
'b': 'boop',
'c': 'foo',
'd': 'bar'
};
var obj2 = mapValues( obj1, transform );
console.dir( obj2 );
// => { 'a': 'a:beep', 'b': 'b:boop', 'c': 'c:foo', 'd': 'd:bar' }
```
[ecma-262-for-in]: http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.4