foop
Version:
interfaces that describe their intentions.
50 lines (46 loc) • 3.05 kB
JavaScript
var ArrayFrom = require('../../util/from')
var reduceArrayToObj = require('./reduceArrayToObj')
// @TODO cask index if needed
var keyValReducer = function (acc, ref) {
var key = ref[0];
var value = ref[1];
acc[key] = value
return acc
}
/**
* @desc Map -> Object
* @since 4.0.0
* @version 5.0.0 <- moved from /reduce to loop/reduce
*
* @param {Map} map map to reduce, calls entries, turns into an array, then object
* @return {Object} reduced object
*
* @see ArrayFrom
*
* @example
*
* var emptyMap = new Map()
* reduce(emptyMap)
* //=> {}
*
* @example
*
* var map = new Map()
* map.set('eh', 1)
* reduce(map)
* //=> {eh: 1}
*
*/
module.exports = function (map) {
// only need to do this if we actually have values in our Map
if (map.size === 0) {
return {}
}
else {
return reduceArrayToObj(
ArrayFrom(map.entries()),
keyValReducer
)
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlTWFwLmpzIiwic291cmNlcyI6WyJyZWR1Y2VNYXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQXJyYXlGcm9tID0gcmVxdWlyZSgnLi4vLi4vdXRpbC9mcm9tJylcbmNvbnN0IHJlZHVjZUFycmF5VG9PYmogPSByZXF1aXJlKCcuL3JlZHVjZUFycmF5VG9PYmonKVxuXG4vLyBAVE9ETyBjYXNrIGluZGV4IGlmIG5lZWRlZFxuY29uc3Qga2V5VmFsUmVkdWNlciA9IChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICBhY2Nba2V5XSA9IHZhbHVlXG4gIHJldHVybiBhY2Ncbn1cblxuLyoqXG4gKiBAZGVzYyBNYXAgLT4gT2JqZWN0XG4gKiBAc2luY2UgNC4wLjBcbiAqIEB2ZXJzaW9uIDUuMC4wIDwtIG1vdmVkIGZyb20gL3JlZHVjZSB0byBsb29wL3JlZHVjZVxuICpcbiAqIEBwYXJhbSB7TWFwfSBtYXAgbWFwIHRvIHJlZHVjZSwgY2FsbHMgZW50cmllcywgdHVybnMgaW50byBhbiBhcnJheSwgdGhlbiBvYmplY3RcbiAqIEByZXR1cm4ge09iamVjdH0gcmVkdWNlZCBvYmplY3RcbiAqXG4gKiBAc2VlIEFycmF5RnJvbVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgdmFyIGVtcHR5TWFwID0gbmV3IE1hcCgpXG4gKiAgICByZWR1Y2UoZW1wdHlNYXApXG4gKiAgICAvLz0+IHt9XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICB2YXIgbWFwID0gbmV3IE1hcCgpXG4gKiAgICBtYXAuc2V0KCdlaCcsIDEpXG4gKiAgICByZWR1Y2UobWFwKVxuICogICAgLy89PiB7ZWg6IDF9XG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IG1hcCA9PiB7XG4gIC8vIG9ubHkgbmVlZCB0byBkbyB0aGlzIGlmIHdlIGFjdHVhbGx5IGhhdmUgdmFsdWVzIGluIG91ciBNYXBcbiAgaWYgKG1hcC5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIHJlZHVjZUFycmF5VG9PYmooXG4gICAgICBBcnJheUZyb20obWFwLmVudHJpZXMoKSksXG4gICAgICBrZXlWYWxSZWR1Y2VyXG4gICAgKVxuICB9XG59XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUM1Q0EsR0FBSyxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQzs7O0FBR3REQSxHQUFLLENBQUMsYUFBYSxHQUFHLFNBQUEsQ0FBQyxHQUFHLEVBQUUsR0FBQSxBQUFJLEFBQU8sQUFBQyxFQUFFLEFBQUcsQ0FBaEI7TUFBQSxHQUFHLFVBQUU7TUFBQSxLQUFLO0FBQU87RUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUs7RUFDaEIsT0FBTyxHQUFHO0NBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBQSxHQUFHLENBQUEsQ0FBQyxBQUFHOztFQUV0QixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO0lBQ2xCLE9BQU8sRUFBRTtHQUNWO09BQ0k7SUFDSCxPQUFPLGdCQUFnQjtNQUNyQixTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO01BQ3hCLGFBQWE7S0FDZDtHQUNGO0NBQ0Y7In0=