UNPKG

foop

Version:

interfaces that describe their intentions.

55 lines (51 loc) 4.66 kB
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==