UNPKG

object-keys-mapping

Version:
98 lines (81 loc) 1.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _util = require('./util'); var isArray = Array.isArray; var keys = Object.keys; /** * @param {Object|Array} origin * @param {Function} ignore */ function trim(origin) { var ignore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultIgnore; if (!(0, _util.isObject)(origin)) { return {}; } if (isArray(origin)) { return trimArray(origin, ignore); } else { return trimObject(origin, ignore); } } /** * @param {Array} origin * @param {Function} ignore * @return {Array} */ function trimArray(origin, ignore) { var result = []; origin.forEach(function (item) { if (ignore(item)) { return; } if (isArray(item)) { var arr = trimArray(item, ignore); if (arr.length) { result.push(arr); } } else if ((0, _util.isObject)(item)) { var obj = trimObject(item, ignore); if (keys(obj).length) { result.push(obj); } } else { result.push(item); } }); return result; } /** * @param {Object} origin * @param {Function} ignore * @return {Object} */ function trimObject(origin, ignore) { var result = {}; keys(origin).forEach(function (key) { var value = origin[key]; if (ignore(value)) { return; } if (isArray(value)) { var arr = trimArray(value, ignore); if (arr.length) { result[key] = arr; } } else if ((0, _util.isObject)(value)) { var obj = trimObject(value, ignore); if (keys(obj).length) { result[key] = obj; } } else { result[key] = value; } }); return result; } function defaultIgnore(v) { return v === null || v === undefined || v === ''; } exports.default = trim;