@romanhavryliv/deep-sorting
Version:
Sorting function for arrays of objects.
2 lines (1 loc) • 1.15 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});function deepSorting(f,o){if(o===void 0&&(o=[]),!o.length){f.sort();return}f.sort(function(n,u){return sortingFunc(n,u,o)})}exports.default=deepSorting;function sortingFunc(f,o,n,u){return u===void 0&&(u=0),comparing(f,o,n[u],"more")?1:comparing(f,o,n[u],"less")?-1:comparing(f,o,n[u],"eq")&&u<n.length-1?sortingFunc(f,o,n,++u):0}function comparing(f,o,n,u){var s=sortingCriteria(f,o,n),l=s.newObj1,d=s.newObj2;switch(u){case"more":return l>d;case"eq":return l===d;case"less":return l<d;default:return l>d}}function sortingCriteria(f,o,n){n===void 0&&(n=null);var u,s,l,d=function(v){var t=v.replace(/^\.|^\[/,"").split(/\.|\[/).map(function(e){return/\]/.test(e)?e.slice(0,-1):e});u=t.reduce(function(e,p){return e==null?void 0:e[p]},f),s=t.reduce(function(e,p){return e==null?void 0:e[p]},o)};return typeof n=="string"&&d(n),Array.isArray(n)&&typeof n[0]=="string"&&d(n[0]),typeof n=="function"&&(u=n(f),s=n(o)),Array.isArray(n)&&typeof n[0]=="function"&&(u=n[0](f),s=n[0](o)),n===null&&(u=f,s=o),Array.isArray(n)&&n[1]==="desc"?l={newObj1:s,newObj2:u}:l={newObj1:u,newObj2:s},l}