foop
Version:
interfaces that describe their intentions.
55 lines (51 loc) • 4.66 kB
JavaScript
var isReal = require('../is/real')
var isEmpty = require('../is/empty')
var ObjectKeys = require('../util/keys')
var filterWhere = require('../loop/filter/filterWhere')
var reduceToObj = require('./toObj')
// const [isNotReal, isNotEmpty] = [isReal, isEmpty].map(not)
// const isNotEmptyOrNotReal = or(isNotReal, isNotEmpty)
var mapNotEmpty = filterWhere('_', function (x) { return isReal(x) && !isEmpty(x); })
/**
* @desc goes through the maps,
* and the map values,
* reduces them to array
* then to an object using the reduced values
*
* @memberOf reduce
* @since 4.0.0 <- moved as a dep function
* @since 0.4.0
*
* @param {Object} obj object to clean, usually .entries()
* @return {Object} reduced object, without `notReal` values
*
* @TODO seems to be overkill with reducing mapping just copy & ignore or delete?
*
* @see reduce
* @see isObjWithKeys
* @see isNotEmptyArray
* @see isReal
* @see http://underscorejs.org/#reduce
*
* @example
*
* const map = new ChainedMap()
*
* map
* .set('emptyArr', [])
* .set('arr', [1])
* .set('nill', null)
* .set('emptyObj', {})
* .set('obj', {keys: true})
*
* clean(map.entries())
* //=> {arr: [1], obj: {keys: true}}
*
*/
module.exports = function clean(obj) {
var mapped = mapNotEmpty(obj)
var keys = ObjectKeys(mapped)
var iterator = function (reduced, key) { return (reduced[key] = mapped[key]); }
return reduceToObj(keys, iterator)
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4uanMiLCJzb3VyY2VzIjpbImNsZWFuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzUmVhbCA9IHJlcXVpcmUoJy4uL2lzL3JlYWwnKVxuY29uc3QgaXNFbXB0eSA9IHJlcXVpcmUoJy4uL2lzL2VtcHR5JylcbmNvbnN0IE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi91dGlsL2tleXMnKVxuY29uc3QgZmlsdGVyV2hlcmUgPSByZXF1aXJlKCcuLi9sb29wL2ZpbHRlci9maWx0ZXJXaGVyZScpXG5jb25zdCByZWR1Y2VUb09iaiA9IHJlcXVpcmUoJy4vdG9PYmonKVxuXG4vLyBjb25zdCBbaXNOb3RSZWFsLCBpc05vdEVtcHR5XSA9IFtpc1JlYWwsIGlzRW1wdHldLm1hcChub3QpXG4vLyBjb25zdCBpc05vdEVtcHR5T3JOb3RSZWFsID0gb3IoaXNOb3RSZWFsLCBpc05vdEVtcHR5KVxuY29uc3QgbWFwTm90RW1wdHkgPSBmaWx0ZXJXaGVyZSgnXycsIHggPT4gaXNSZWFsKHgpICYmICFpc0VtcHR5KHgpKVxuXG4vKipcbiAqIEBkZXNjIGdvZXMgdGhyb3VnaCB0aGUgbWFwcyxcbiAqICAgICAgIGFuZCB0aGUgbWFwIHZhbHVlcyxcbiAqICAgICAgIHJlZHVjZXMgdGhlbSB0byBhcnJheVxuICogICAgICAgdGhlbiB0byBhbiBvYmplY3QgdXNpbmcgdGhlIHJlZHVjZWQgdmFsdWVzXG4gKlxuICogQG1lbWJlck9mIHJlZHVjZVxuICogQHNpbmNlIDQuMC4wIDwtIG1vdmVkIGFzIGEgZGVwIGZ1bmN0aW9uXG4gKiBAc2luY2UgMC40LjBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIG9iamVjdCB0byBjbGVhbiwgdXN1YWxseSAuZW50cmllcygpXG4gKiBAcmV0dXJuIHtPYmplY3R9IHJlZHVjZWQgb2JqZWN0LCB3aXRob3V0IGBub3RSZWFsYCB2YWx1ZXNcbiAqXG4gKiBAVE9ETyBzZWVtcyB0byBiZSBvdmVya2lsbCB3aXRoIHJlZHVjaW5nIG1hcHBpbmcganVzdCBjb3B5ICYgaWdub3JlIG9yIGRlbGV0ZT9cbiAqXG4gKiBAc2VlIHJlZHVjZVxuICogQHNlZSBpc09ialdpdGhLZXlzXG4gKiBAc2VlIGlzTm90RW1wdHlBcnJheVxuICogQHNlZSBpc1JlYWxcbiAqIEBzZWUgaHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvI3JlZHVjZVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICBjb25zdCBtYXAgPSBuZXcgQ2hhaW5lZE1hcCgpXG4gKlxuICogICBtYXBcbiAqICAgIC5zZXQoJ2VtcHR5QXJyJywgW10pXG4gKiAgICAuc2V0KCdhcnInLCBbMV0pXG4gKiAgICAuc2V0KCduaWxsJywgbnVsbClcbiAqICAgIC5zZXQoJ2VtcHR5T2JqJywge30pXG4gKiAgICAuc2V0KCdvYmonLCB7a2V5czogdHJ1ZX0pXG4gKlxuICogICBjbGVhbihtYXAuZW50cmllcygpKVxuICogICAvLz0+IHthcnI6IFsxXSwgb2JqOiB7a2V5czogdHJ1ZX19XG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNsZWFuKG9iaikge1xuICBjb25zdCBtYXBwZWQgPSBtYXBOb3RFbXB0eShvYmopXG4gIGNvbnN0IGtleXMgPSBPYmplY3RLZXlzKG1hcHBlZClcbiAgY29uc3QgaXRlcmF0b3IgPSAocmVkdWNlZCwga2V5KSA9PiAocmVkdWNlZFtrZXldID0gbWFwcGVkW2tleV0pXG5cbiAgcmV0dXJuIHJlZHVjZVRvT2JqKGtleXMsIGl0ZXJhdG9yKVxufVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdENBLEdBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUMxQ0EsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUM7QUFDekRBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQzs7OztBQUl0Q0EsR0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLFVBQUEsQ0FBQyxDQUFBLENBQUMsQUFBRyxTQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBQSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNDbkUsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUU7RUFDbkNBLEdBQUssQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztFQUMvQkEsR0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0VBQy9CQSxHQUFLLENBQUMsUUFBUSxHQUFHLFNBQUEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEFBQUcsU0FBQSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBQTs7RUFFL0QsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztDQUNuQzsifQ==