| var _curry1 = |
| /*#__PURE__*/ |
| require("./internal/_curry1"); |
| |
| var _has = |
| /*#__PURE__*/ |
| require("./internal/_has"); |
| |
| var keys = |
| /*#__PURE__*/ |
| require("./keys"); |
| /** |
| * Same as [`R.invertObj`](#invertObj), however this accounts for objects with |
| * duplicate values by putting the values into an array. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.9.0 |
| * @category Object |
| * @sig {s: x} -> {x: [ s, ... ]} |
| * @param {Object} obj The object or array to invert |
| * @return {Object} out A new object with keys in an array. |
| * @see R.invertObj |
| * @example |
| * |
| * const raceResultsByFirstName = { |
| * first: 'alice', |
| * second: 'jake', |
| * third: 'alice', |
| * }; |
| * R.invert(raceResultsByFirstName); |
| * //=> { 'alice': ['first', 'third'], 'jake':['second'] } |
| */ |
| |
| |
| var invert = |
| /*#__PURE__*/ |
| _curry1(function invert(obj) { |
| var props = keys(obj); |
| var len = props.length; |
| var idx = 0; |
| var out = {}; |
| |
| while (idx < len) { |
| var key = props[idx]; |
| var val = obj[key]; |
| var list = _has(val, out) ? out[val] : out[val] = []; |
| list[list.length] = key; |
| idx += 1; |
| } |
| |
| return out; |
| }); |
| |
| module.exports = invert; |