@bigfishtv/cockpit
Version:
39 lines (31 loc) • 976 B
JavaScript
;
exports.__esModule = true;
exports.default = deepDuplicate;
var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _isPlainObject = require('lodash/isPlainObject');
var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var count = 0;
/**
* Deep duplicates an array or object
* @param {(Object|Array)} param - Object or array to deep duplicate
* @return {(Object|Array)} - Returns deep duplicated object or array
*/
function deepDuplicate(param) {
if ((0, _isArray2.default)(param)) {
return param.map(deepDuplicate);
} else if ((0, _isPlainObject2.default)(param)) {
var obj = {};
for (var key in param) {
if (key == 'id' && !('filename' in param)) {
obj[key] = 'dup' + ++count;
} else {
obj[key] = deepDuplicate(param[key]);
}
}
return obj;
} else {
return param;
}
}