@re-flex/object-path
Version:
Re-flex UTILS _> object-path
3 lines (2 loc) • 732 B
JavaScript
class e{constructor(e){this.source=e}parsingKey(e){return e.split(".").map(e=>Number.isNaN(Number(e))?e:Number(e))}get(e){return e?this.parsingKey(e).reduce((e,r,t,s)=>void 0===e||void 0===(null==e?void 0:e[r])?void 0:e=e[r],this.source):this.source}set(e,r,t=!0){if(0===e.length)return;const s=this.parsingKey(e);s.reduce((e,i,u)=>u===s.length-1?(e[i]=r,!0):(void 0===e[i]&&t&&(e[i]={}),e[i]),this.source)}push(e,r){let t=this.get(e);return!!Array.isArray(t)&&(t.push(r),this.set(e,t),!0)}del(e){if(0===e.length)return!1;const r=this.parsingKey(e);return r.reduce((e,t,s)=>s===r.length-1?(delete e[t],!0):e[t],this.source),!1}has(e){return void 0!==this.get(e)}}export{e as default};
//# sourceMappingURL=object-path.modern.js.map