Simple util to create an object with its keys mirrored as values. Standalone port of react/lib/keyMirror.
Switch branches/tags
Nothing to show
Clone or download
STRML Merge pull request #11 from sverrejoh/patch-1
Added licence field to package.json
Latest commit 4d55398 Oct 15, 2015
Failed to load latest commit information. Update Sep 4, 2015
index.js Remove uneeded continue Mar 31, 2015
package.json Removed deprecated `licences` field Oct 15, 2015


Create an object with values equal to its key names.

I thought react/lib/keyMirror was useful and wanted to reuse it without any dependencies.

This is not my code, this is property of Facebook.


From this discussion:

The main purpose of keyMirror is to deal with the fact that Closure Compiler advanced mode crushes keys, which allows you to write code like

keyMirror({monkey: null, gorilla: null})

and have it become something like


which evaluates to


at runtime. If it was specified as a list of strings, they wouldn't get crushed matching the property names.


npm install keymirror

var keyMirror = require('keymirror');
var COLORS = keyMirror({blue: null, red: null});
var myColor =;
var isColorValid = !!COLORS[myColor];

The last line could not be performed if the values of the generated enum were not equal to their keys.

Input: {key1: val1, key2: val2}

Output: {key1: key1, key2: key2}

I sometimes use this with lodash - use the following upon your first use of lodash to mix it in:

var _ = require('lodash');
_.mixin({keyMirror: require('keymirror')});
// Can now be used as _.keyMirror(object)