# mapKeys > Map keys from one object to a new object having the same values.
## Usage ```javascript var mapKeys = require( '@stdlib/utils/map-keys' ); ``` #### mapKeys( obj, transform ) Map keys from one `object` to a new `object` having the same values. ```javascript function transform( key, value ) { return key + value; } var obj1 = { 'a': 1, 'b': 2 }; var obj2 = mapKeys( obj1, transform ); // returns { 'a1': 1, 'b2': 2 } ``` The `transform` function is provided three arguments: - `key`: object key - `value`: object value corresponding to `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 **own** properties. Hence, the function does **not** map inherited properties. - The function **shallow** copies key values. - The value returned by a `transform` function should be a value which can be serialized as an `object` key.
## Examples ```javascript var mapKeys = require( '@stdlib/utils/map-keys' ); function transform( key, value ) { return key + ':' + value; } var obj1 = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' }; var obj2 = mapKeys( obj1, transform ); console.dir( obj2 ); // => { 'a:beep': 'beep', 'b:boop': 'boop', 'c:foo': 'foo', 'd:bar': 'bar' } ```