UNPKG

@extra-array/sort

Version:
26 lines (25 loc) 593 B
'use strict'; function cmp(a, b) { return a < b ? -1 : (a > b ? 1 : 0); } function id(v) { return v; } function sortDual$(x, fc = null, fm = null) { var fc = fc || cmp, fm = fm || id; var m = new Map(), i = -1; for (var v of x) m.set(v, fm(v, ++i, x)); return x.sort((a, b) => cmp(m.get(a), m.get(b))); } function sort$(x, fc = null, fm = null) { var fc = fc || cmp; if (fm) return sortDual$(x, fc, fm); else return x.sort(fc); } function sort(x, fc = null, fm = null) { return sort$(x.slice(), fc, fm); } module.exports = sort;