object/clearObj.ts

/** @module Object */

/**
 * Removes all properties from an object.
 * @function
 * @param {Object} obj - object to remove properties from
 * @param {Array} [filter] - list of keys to not remove
 * @returns {void}
 */
export const clearObj = (obj: Record<any, any>, filter?: string[]): void => {
  obj &&
    Object.entries(obj).map(([key, value]) => {
      if (filter && filter.indexOf(key) !== -1) return
      if (typeof value === 'object') clearObj(value)
      obj[key] = undefined
      delete obj[key]
    })
}