UNPKG

@arrows/array

Version:
70 lines (69 loc) 2.29 kB
"use strict"; 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;