@terminus/ngx-tools
Version:
[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
29 lines • 3.24 kB
JavaScript
/**
* Helper function to get an object with deep keys
*
* @param object - The object to query.
* @param path - The string path of the property to get.
* @param defaultValue - (optional) - The value returned for undefined resolved values.
* @returns The updated object
*
* @example
* const myObj = {foo: {bar: 'baz', bing: 'bang'}};
* objectDeepGet(myObj, 'foo.bar') // Returns: 'baz'
* objectDeepGet(myObj, 'does.not.exist', 'hi') // Returns: 'hi'
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function objectDeepGet(object, path, defaultValue) {
if (!object) {
return defaultValue;
}
const keys = path.split('.');
object = object[keys[0]];
if (object && keys.length > 1) {
return objectDeepGet(object, keys.slice(1).join('.'), defaultValue);
}
if (object === undefined && defaultValue) {
return defaultValue;
}
return object;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRlZXAtZ2V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy91dGlsaXRpZXMvIiwic291cmNlcyI6WyJvYmplY3QtZGVlcC1nZXQvb2JqZWN0LWRlZXAtZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQTJCLEVBQUUsSUFBWSxFQUFFLFlBQWtCO0lBQ3pGLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxPQUFPLFlBQVksQ0FBQztLQUNyQjtJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6QixJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUM3QixPQUFPLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7S0FDckU7SUFFRCxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksWUFBWSxFQUFFO1FBQ3hDLE9BQU8sWUFBWSxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IGFuIG9iamVjdCB3aXRoIGRlZXAga2V5c1xuICpcbiAqIEBwYXJhbSBvYmplY3QgLSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHBhdGggLSBUaGUgc3RyaW5nIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSAob3B0aW9uYWwpIC0gVGhlIHZhbHVlIHJldHVybmVkIGZvciB1bmRlZmluZWQgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIHVwZGF0ZWQgb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG15T2JqID0ge2Zvbzoge2JhcjogJ2JheicsIGJpbmc6ICdiYW5nJ319O1xuICogb2JqZWN0RGVlcEdldChteU9iaiwgJ2Zvby5iYXInKSAgICAgICAgICAgICAgLy8gUmV0dXJuczogJ2JheidcbiAqIG9iamVjdERlZXBHZXQobXlPYmosICdkb2VzLm5vdC5leGlzdCcsICdoaScpIC8vIFJldHVybnM6ICdoaSdcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiBvYmplY3REZWVwR2V0KG9iamVjdDogUmVjb3JkPHN0cmluZywgYW55PiwgcGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBhbnkge1xuICBpZiAoIW9iamVjdCkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBvYmplY3QgPSBvYmplY3Rba2V5c1swXV07XG5cbiAgaWYgKG9iamVjdCAmJiBrZXlzLmxlbmd0aCA+IDEpIHtcbiAgICByZXR1cm4gb2JqZWN0RGVlcEdldChvYmplY3QsIGtleXMuc2xpY2UoMSkuam9pbignLicpLCBkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgaWYgKG9iamVjdCA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4iXX0=