UNPKG

@bigfishtv/cockpit

Version:

28 lines (25 loc) 659 B
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 } }