ixfx
Version:
Bundle of ixfx libraries
65 lines • 1.81 kB
TypeScript
//#region ../packages/core/src/comparers.d.ts
type CompareResult = number;
type Comparer<V> = (a: V, b: V) => CompareResult;
/**
* Sort numbers in ascending order.
*
* ```js
* [10, 4, 5, 0].sort(numericComparer);
* // Yields: [0, 4, 5, 10]
* [10, 4, 5, 0].sort(comparerInverse(numericComparer));
* // Yields: [ 10, 5, 4, 0]
* ```
*
* Returns:
* 0: values are equal
* negative: `a` should be before `b`
* positive: `a` should come after `b`
* @param a
* @param b
* @returns
*/
declare function numericComparer(a: number, b: number): CompareResult;
/**
* Default sort comparer, following same sematics as Array.sort.
* Consider using {@link defaultComparer} to get more logical sorting of numbers.
*
* Note: numbers are sorted in alphabetical order, eg:
* ```js
* [ 10, 20, 5, 100 ].sort(jsComparer); // same as .sort()
* // Yields: [10, 100, 20, 5]
* ```
*
* Returns -1 if x is less than y
* Returns 1 if x is greater than y
* Returns 0 if x is the same as y
* @param x
* @param y
* @returns
*/
declare function jsComparer(x: any, y: any): CompareResult;
/**
* Inverts the source comparer.
* @param comparer
* @returns
*/
declare function comparerInverse<V>(comparer: Comparer<V>): Comparer<V>;
/**
* Compares numbers by numeric value, otherwise uses the default
* logic of string comparison.
*
* Is an ascending sort:
* b, a, c -> a, b, c
* 10, 5, 100 -> 5, 10, 100
*
* Returns -1 if x is less than y
* Returns 1 if x is greater than y
* Returns 0 if x is the same as y
* @param x
* @param y
* @see {@link comparerInverse} Inverted order
* @returns
*/
declare function defaultComparer(x: any, y: any): CompareResult;
//#endregion
export { jsComparer as a, defaultComparer as i, Comparer as n, numericComparer as o, comparerInverse as r, CompareResult as t };