UNPKG

chain-able

Version:

interfaces that describe their intentions.

51 lines (47 loc) 3.68 kB
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==