chain-able
Version:
interfaces that describe their intentions.
51 lines (47 loc) • 3.68 kB
JavaScript
var isNotEmptyArray = require('../is/notEmptyArray')
var isReal = require('../is/real')
var isObjWithKeys = require('../is/objWithKeys')
var ObjectKeys = require('../util/keys')
/**
* @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
*
* @see reduce
* @see isObjWithKeys
* @see isNotEmptyArray
* @see isReal
*
* @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) {
return ObjectKeys(obj).reduce(function(acc, key) {
var val = obj[key]
if (isReal(val) && (isNotEmptyArray(val) || isObjWithKeys(val))) {
acc[key] = val
}
return acc
}, {})
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4uanMiLCJzb3VyY2VzIjpbImNsZWFuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzTm90RW1wdHlBcnJheSA9IHJlcXVpcmUoJy4uL2lzL25vdEVtcHR5QXJyYXknKVxuY29uc3QgaXNSZWFsID0gcmVxdWlyZSgnLi4vaXMvcmVhbCcpXG5jb25zdCBpc09ialdpdGhLZXlzID0gcmVxdWlyZSgnLi4vaXMvb2JqV2l0aEtleXMnKVxuY29uc3QgT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL3V0aWwva2V5cycpXG5cbi8qKlxuICogQGRlc2MgZ29lcyB0aHJvdWdoIHRoZSBtYXBzLFxuICogICAgICAgYW5kIHRoZSBtYXAgdmFsdWVzLFxuICogICAgICAgcmVkdWNlcyB0aGVtIHRvIGFycmF5XG4gKiAgICAgICB0aGVuIHRvIGFuIG9iamVjdCB1c2luZyB0aGUgcmVkdWNlZCB2YWx1ZXNcbiAqXG4gKiBAbWVtYmVyT2YgcmVkdWNlXG4gKiBAc2luY2UgNC4wLjAgPC0gbW92ZWQgYXMgYSBkZXAgZnVuY3Rpb25cbiAqIEBzaW5jZSAwLjQuMFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogb2JqZWN0IHRvIGNsZWFuLCB1c3VhbGx5IC5lbnRyaWVzKClcbiAqIEByZXR1cm4ge09iamVjdH0gcmVkdWNlZCBvYmplY3QsIHdpdGhvdXQgYG5vdFJlYWxgIHZhbHVlc1xuICpcbiAqIEBzZWUgcmVkdWNlXG4gKiBAc2VlIGlzT2JqV2l0aEtleXNcbiAqIEBzZWUgaXNOb3RFbXB0eUFycmF5XG4gKiBAc2VlIGlzUmVhbFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICBjb25zdCBtYXAgPSBuZXcgQ2hhaW5lZE1hcCgpXG4gKlxuICogICBtYXBcbiAqICAgIC5zZXQoJ2VtcHR5QXJyJywgW10pXG4gKiAgICAuc2V0KCdhcnInLCBbMV0pXG4gKiAgICAuc2V0KCduaWxsJywgbnVsbClcbiAqICAgIC5zZXQoJ2VtcHR5T2JqJywge30pXG4gKiAgICAuc2V0KCdvYmonLCB7a2V5czogdHJ1ZX0pXG4gKlxuICogICBjbGVhbihtYXAuZW50cmllcygpKVxuICogICAvLz0+IHthcnI6IFsxXSwgb2JqOiB7a2V5czogdHJ1ZX19XG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNsZWFuKG9iaikge1xuICByZXR1cm4gT2JqZWN0S2V5cyhvYmopLnJlZHVjZShmdW5jdGlvbihhY2MsIGtleSkge1xuICAgIGNvbnN0IHZhbCA9IG9ialtrZXldXG5cbiAgICBpZiAoaXNSZWFsKHZhbCkgJiYgKGlzTm90RW1wdHlBcnJheSh2YWwpIHx8IGlzT2JqV2l0aEtleXModmFsKSkpIHtcbiAgICAgIGFjY1trZXldID0gdmFsXG4gICAgfVxuXG4gICAgcmV0dXJuIGFjY1xuICB9LCB7fSlcbn1cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0FBQ3REQSxHQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcENBLEdBQUssQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQ2xEQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUMxQyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtFQUNuQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFO0lBQy9DQSxHQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7O0lBRXBCLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO01BQy9ELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHO0tBQ2Y7O0lBRUQsT0FBTyxHQUFHO0dBQ1gsRUFBRSxFQUFFLENBQUM7Q0FDUDsifQ==