@utilify/object
Version:
These functions simplify many common operations in JavaScript/TypeScript development when working with objects and data structures.
2 lines (1 loc) • 2.02 kB
JavaScript
function n(n,r){return Object.keys(n).reduce(((t,e)=>(r.includes(e)||(t[e]=n[e]),t)),{})}function r(n,r){return r.reduce(((r,t)=>(t in n&&(r[t]=n[t]),r)),{})}function t(...n){return n.reduce(((n,r)=>{for(const t in r)n[t]=r[t];return n}),Array.isArray(n[0])?[]:{})}function e(n){return null!==n&&"object"==typeof n&&n.constructor===Object}function o(n){const r=Array.isArray(n)?[]:{};for(const t in n)Array.isArray(n[t])||e(n[t])?r[t]=o(n[t]):r[t]=n[t];return r}function c(...n){return n.reduce(((n,r)=>{for(const t in r)Array.isArray(r[t])||e(r[t])?n[t]=c(n[t],r[t]):n[t]=r[t];return n}),Array.isArray(n[0])?[]:{})}function i(n,r){return Object.is(n,r)}function u(n,r){const t=Object.keys(n),e=Object.keys(r);if(t.length!==e.length)return!1;for(const o of t){if(!e.includes(o))return!1;if(typeof n[o]!=typeof r[o])return!1;if(null!==n[o]&&"object"==typeof n[o]){if(!u(n[o],r[o]))return!1}else if(!Object.is(n[o],r[o]))return!1}return!0}function s(n,r=".",t=""){let o={};for(const c in n)if(n.hasOwnProperty(c)){const i=t?`${t}${r}${c}`:c;e(n[c])?Object.assign(o,s(n[c],r,i)):o[i]=n[c]}return o}function f(n){const r=Array.isArray(n)?[]:{};for(const t in n)r[t]=n[t];return r}function y(n){return Object.freeze(n)}function l(n){const r=Object.freeze(n);for(const t in r)e(n[t])&&l(n[t]);return r}function a(n,r){const t={};for(const o in n)e(n[o])?t[o]=a(n[o],r):"string"==typeof n[o]?t[o]=n[o].replace(/{{(\w+)}}/g,((n,t)=>t in r?r[t]:`{{${t}}}`)):t[o]=n[o];return t}function A(n,r="."){let t={};const e=new RegExp(`${r}`);for(const o in n)if(e.test(o)){const e=o.split(r);let c=t;e.slice(0,-1).forEach((n=>{n in c||(c[n]={}),c=c[n]})),c[e[e.length-1]]=n[o]}else t[o]=n[o];return t}function b(n,r,t){const o={};for(const c in n)e(n[c])?o[c]=b(n[c],r,t):r.includes(n[c])?void 0!==t&&(o[c]=t):o[c]=n[c];return o}export{f as clone,o as deepClone,l as deepFreeze,c as deepMerge,s as flattenObj,y as freeze,a as interpolate,u as isDeepEqual,i as isEqual,t as merge,n as omit,r as pick,b as sanitizeObj,A as unflattenObj};