@extra-array/sort
Version:
Arranges values in an order.
25 lines (24 loc) • 584 B
JavaScript
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);
}
export { sort as default };