dotize
Version:
Convert complex Js object to dot notation Js object
3 lines (2 loc) • 2.38 kB
JavaScript
var r={valTypes:{none:"NONE",primitive:"PRIM",object:"OBJECT",array:"ARRAY"},getValType:function(e){return e&&"object"==typeof e||Array.isArray(e)?Array.isArray(e)?r.valTypes.array:"object"==typeof e?r.valTypes.object:void 0:r.valTypes.primitive},getPathType:function(e){var t=[];for(var i in e){var a=e[i];a?r.isNumber(a)?t.push(r.valTypes.array):t.push(r.valTypes.object):t.push(r.valTypes.none)}return t},isUndefined:function(r){return void 0===r},isNumber:function(r){return!isNaN(parseFloat(r))&&isFinite(r)&&-1===r.indexOf(".")},isEmptyObj:function(r){for(var e in r)if(Object.hasOwnProperty.call(r,e))return!1;return JSON.stringify(r)===JSON.stringify({})},isNotObject:function(r){return!r||"object"!=typeof r},isEmptyArray:function(r){return Array.isArray(r)&&0==r.length},isNotArray:function(r){return 0==Array.isArray(r)},removeEmptyArrayItem:function(r){return r.filter(function(r){return null!=r&&""!=r})},getFieldName:function(e,t,i,a,n){return n?(t||"")+(r.isNumber(e)?"["+e+"]":(i&&!t?"":".")+e):a?(t||"")+"["+e+"]":(t?t+".":"")+e},startsWith:function(r,e){return 0==r.indexOf(e)},convert:function(e,t){var i={};return r.isNotObject(e)&&r.isNotArray(e)?t?(i[t]=e,i):e:r.isEmptyArray(e)?e:function e(t,a,n){var s=Array.isArray(t);for(var y in t){var o=t[y];o&&"object"==typeof o?Array.isArray(o)?r.isEmptyArray(o)?i[r.getFieldName(y,a,n,!1,!0)]=o:i=e(o,r.getFieldName(y,a,n,!1,!0),s):s&&0==r.isEmptyObj(o)?i=e(o,r.getFieldName(y,a,n,!0)):0==r.isEmptyObj(o)?i=e(o,r.getFieldName(y,a,n)):r.isEmptyObj(o)&&(i[r.getFieldName(y,a,n,s)]=o):s||r.isNumber(y)?i[r.getFieldName(y,a,n,!0)]=o:i[r.getFieldName(y,a,n)]=o}return i}(e,t,!0)},backward:function(e,t){var i={},a=/\[(\d+)\]/g;if(r.isNotObject(e)&&r.isNotArray(e))return t?e[t]:e;if(r.isEmptyArray(e))return e;for(var n in e){var s=e[n];if(t){var y=new RegExp("^"+t);n=n.replace(y,"")}n=n.replace(a,".$1"),r.startsWith(n,".")&&(n=n.replace(/^\./,""));var o=n.split("."),u=r.getPathType(o);r.isUndefined(u)||u[0]!=r.valTypes.array||0!=Array.isArray(i)||(i=[]),function e(t,a,n,s){var y=o.shift(),p=u.shift();if(void 0!==y&&""!=y){if(y=r.isNumber(y)?parseInt(y):y,o.length>0)return void 0===a[y]&&(a[y]=u[0]==r.valTypes.array?[]:{}),void e(t,a[y],y,a);p==r.valTypes.array&&n&&s?(0==Array.isArray(s[n])&&(s[n]=[]),s[n].push(t)):a[y]=t}else i=t}(s,i)}return i}};export{r as default};
//# sourceMappingURL=dotize.module.js.map