@arrows/array
Version:
Functional tools for JS arrays
70 lines (69 loc) • 2.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.sort = void 0;
const curry_1 = require("@arrows/composition/curry");
const _sort = (fn, arr) => [...arr].sort(fn);
const curriedSort = curry_1.default(_sort);
/**
* Creates a new, sorted array.
* Have built-in methods for sorting numerical and string arrays.
*
* @param compareFn Compare function
* @param arr Initial array
* @returns New array
*
* @method num Sorts numerical arrays in an ascending order
* @method numDesc Sorts numerical arrays in a descending order
* @method str Sorts string arrays in an ascending order using comparison operators
* @method strDesc Sorts string arrays in a descending order using comparison operators
* @method locale Sorts string arrays in an ascending order using localeCompare
* @method localeDesc Sorts string arrays in a descending order using localeCompare
*/
const sort = Object.assign(curriedSort, {
/**
* Sorts numerical arrays in an ascending order
*
* @param arr Initial array
* @returns New array
*/
num: curriedSort((a, b) => a - b),
/**
* Sorts numerical arrays in a descending order
*
* @param arr Initial array
* @returns New array
*/
numDesc: curriedSort((a, b) => b - a),
/**
* Sorts string arrays in an ascending order using comparison operators.
*
* @param arr Initial array
* @returns New array
*/
str: curriedSort((a, b) => (a === b ? 0 : a > b ? 1 : -1)),
/**
* Sorts string arrays in a descending order using comparison operators.
*
* @param arr Initial array
* @returns New array
*/
strDesc: curriedSort((a, b) => a === b ? 0 : a > b ? -1 : 1),
/**
* Sorts string arrays in an ascending order using `String.prototype.localeCompare`.
*
* Uses String.prototype.localeCompare
*
* @param arr Initial array
* @returns New array
*/
locale: curriedSort((a, b) => a.localeCompare(b)),
/**
* Sorts string arrays in a descending order using `String.prototype.localeCompare`.
*
* @param arr Initial array
* @returns New array
*/
localeDesc: curriedSort((a, b) => b.localeCompare(a)),
});
exports.sort = sort;
exports.default = sort;
;