@bigfishtv/cockpit
Version:
28 lines (25 loc) • 659 B
JavaScript
import isArray from 'lodash/isArray'
import isPlainObject from 'lodash/isPlainObject'
let 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
*/
export default function deepDuplicate(param) {
if (isArray(param)) {
return param.map(deepDuplicate)
} else if (isPlainObject(param)) {
const obj = {}
for (let key in param) {
if (key == 'id' && !('filename' in param)) {
obj[key] = 'dup' + ++count
} else {
obj[key] = deepDuplicate(param[key])
}
}
return obj
} else {
return param
}
}