* Flattens an object and crates new keys with custom delimiters. * @param {Object} obj The object to flatten. * @param {String} [delimiter='.'] The delimiter of the newly generated keys. * @param {Object} result * @returns {Object} The flattened object.
(obj, parentKey, delimiter = '.', result = {})
| 106 | * @returns {Object} The flattened object. |
| 107 | **/ |
| 108 | static flattenObject(obj, parentKey, delimiter = '.', result = {}) { |
| 109 | for (const key in obj) { |
| 110 | if (Object.prototype.hasOwnProperty.call(obj, key)) { |
| 111 | const newKey = parentKey ? parentKey + delimiter + key : key; |
| 112 | |
| 113 | if (typeof obj[key] === 'object' && obj[key] !== null) { |
| 114 | this.flattenObject(obj[key], newKey, delimiter, result); |
| 115 | } else { |
| 116 | result[newKey] = obj[key]; |
| 117 | } |
| 118 | } |
| 119 | } |
| 120 | return result; |
| 121 | } |
| 122 | |
| 123 | /** |
| 124 | * Realm-safe check for Date. |