@stryke/helpers
Version:
A package containing miscellaneous helper functions that are used across many different Storm Software projects.
2 lines (1 loc) • 702 B
JavaScript
import{toStringKey as o}from"@stryke/convert/to-string-key";import{isDeepKey as K}from"@stryke/type-checks/is-deep-key";import{isNumber as f}from"@stryke/type-checks/is-number";import{toPath as r}from"./to-path";export function getField(t,e,d){if(t===null)return d;switch(typeof e){case"string":{const n=t[e];return n===void 0?K(e)?getField(t,r(e),d):d:n}case"number":case"symbol":{f(e)&&(e=o(e));const n=Array.isArray(e)?void 0:t[e];return n===void 0?d:n}default:{if(Array.isArray(e))return u(t,e,d);e=Object.is(e?.valueOf(),-0)?"-0":String(e);const n=t[e];return n===void 0?d:n}}}function u(t,e,d){if(e.length===0)return d;let n=t;for(const i of e){if(n===null)return d;n=n[i]}return n===void 0?d:n}