@beenotung/tslib
Version:
utils library in Typescript
47 lines (46 loc) • 1.36 kB
JavaScript
;
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));
}