|
|
|
@ -6,3 +6,27 @@ export const generateID = () => { |
|
|
|
} |
|
|
|
|
|
|
|
export const capitalise = s => s.substring(0, 1).toUpperCase() + s.substring(1) |
|
|
|
|
|
|
|
/** |
|
|
|
* Gets a key within an object. The key supports dot syntax for retrieving deep |
|
|
|
* fields - e.g. "a.b.c". |
|
|
|
* Exact matches of keys with dots in them take precedence over nested keys of |
|
|
|
* the same path - e.g. getting "a.b" from { "a.b": "foo", a: { b: "bar" } } |
|
|
|
* will return "foo" over "bar". |
|
|
|
* @param obj the object |
|
|
|
* @param key the key |
|
|
|
*/ |
|
|
|
export const deepGet = (obj, key) => { |
|
|
|
if (!obj || !key) { |
|
|
|
return null |
|
|
|
} |
|
|
|
if (obj[key] != null) { |
|
|
|
return obj[key] |
|
|
|
} |
|
|
|
const split = key.split(".") |
|
|
|
let value = obj |
|
|
|
for (let i = 0; i < split.length; i++) { |
|
|
|
value = value?.[split[i]] |
|
|
|
} |
|
|
|
return value |
|
|
|
} |
|
|
|
|