UNPKG

@beenotung/tslib

Version:
47 lines (46 loc) 1.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CompareResult = void 0; exports.isBetween = isBetween; exports.compare = compare; exports.compare_by_keys = compare_by_keys; exports.sort_by_keys = sort_by_keys; /** * inclusive * */ function isBetween(lowerBound, value, upperBound) { return lowerBound <= value && value <= upperBound; } var CompareResult; (function (CompareResult) { CompareResult[CompareResult["Smaller"] = -1] = "Smaller"; CompareResult[CompareResult["Equal"] = 0] = "Equal"; CompareResult[CompareResult["Larger"] = 1] = "Larger"; })(CompareResult || (exports.CompareResult = CompareResult = {})); function compare(a, b) { return a < b ? CompareResult.Smaller : a > b ? CompareResult.Larger : CompareResult.Equal; } function compare_by_keys(_keys) { const keys = _keys.map(key => { if (typeof key === 'object') { return key; } return { key, order: 'asc' }; }); return (a, b) => { for (const { key, order } of keys) { const cmp = compare(a[key], b[key]); if (cmp !== 0) { return order === 'desc' ? -cmp : cmp; } } return 0; }; } function sort_by_keys(array, keys) { return array.sort(compare_by_keys(keys)); }