keysort
Version:
Sorts an Array of Objects with SQL ORDER BY clause syntax
6 lines (5 loc) • 1.07 kB
JavaScript
/*!
2023 Jason Mulligan <jason.mulligan@avoidwork.com>
@version 3.0.1
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).lru={})}(this,(function(e){"use strict";const t=/-|\s/,n=" !== undefined";e.keysort=function(e=[],s="",$=!1){const o=function(e,t=","){return e.trim().split(new RegExp(`\\s*${t}\\s*`))}(s.replace(/\s*asc/gi,"").replace(/\s*desc/gi," desc")).map((e=>e.split(" "))),i=[];for(const[e,s]of o){const $="desc"===s?1:-1,o=-$;let u=".",r="";t.test(e)&&(u='["',r='"]'),i.push(`if (a${u}${e}${r}${n} && b${u}${e}${r}${n}) {`),i.push(` if (a${u}${e}${r} < b${u}${e}${r}) return ${$};`),i.push(` if (a${u}${e}${r} > b${u}${e}${r}) return ${o};`),i.push("} else {"),i.push(` if (a${u}${e}${r}${n}) return ${$};`),i.push(` if (b${u}${e}${r}${n}) return ${o};`),i.push("}")}return i.push("return 0;"),e[$?"toSorted":"sort"](new Function("a","b",i.join("\n")))}}));//# sourceMappingURL=keysort.umd.min.js.map