Skip to content

Instantly share code, notes, and snippets.

@bjconlan
Created January 31, 2022 11:48
Show Gist options
  • Save bjconlan/8ec0d93b1b791bf71e9af7853a06b215 to your computer and use it in GitHub Desktop.
Save bjconlan/8ec0d93b1b791bf71e9af7853a06b215 to your computer and use it in GitHub Desktop.
JSON sort
const c = (x) => x?.name ?? x.alias ?? x.username ?? x;
const qs = ([p, ...rest]) => p ? [...qs(rest.filter(x => c(x) < c(p))), traverse(p), ...qs(rest.filter(x => c(x) >= c(p)))] : []
const traverse = (x) => x?.constructor === Object
? Object.entries(x).sort().reduce((r, [k, v]) => { r[k] = traverse(v); return r; }, {})
: Array.isArray(x) ? qs(x): x;
console.log(JSON.stringify(traverse(require(`${process.argv[2]}`)), null, 2));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment