diff options
Diffstat (limited to 'deps/npm/node_modules/cli-table2/node_modules/lodash/object/invert.js')
-rw-r--r-- | deps/npm/node_modules/cli-table2/node_modules/lodash/object/invert.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/deps/npm/node_modules/cli-table2/node_modules/lodash/object/invert.js b/deps/npm/node_modules/cli-table2/node_modules/lodash/object/invert.js new file mode 100644 index 0000000000..54fb1f1bef --- /dev/null +++ b/deps/npm/node_modules/cli-table2/node_modules/lodash/object/invert.js @@ -0,0 +1,60 @@ +var isIterateeCall = require('../internal/isIterateeCall'), + keys = require('./keys'); + +/** Used for native method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite property + * assignments of previous values unless `multiValue` is `true`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to invert. + * @param {boolean} [multiValue] Allow multiple values per key. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + * + * // with `multiValue` + * _.invert(object, true); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ +function invert(object, multiValue, guard) { + if (guard && isIterateeCall(object, multiValue, guard)) { + multiValue = undefined; + } + var index = -1, + props = keys(object), + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index], + value = object[key]; + + if (multiValue) { + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + } + else { + result[value] = key; + } + } + return result; +} + +module.exports = invert; |