@barchart/common-js
Version:
Library of common JavaScript utilities
111 lines (99 loc) • 2 kB
JavaScript
import * as assert from './../../lang/assert.js';
/**
* Functions that can be used as comparators.
*
* @public
* @module collections/sorting/comparators
*/
/**
* Compares two dates (in ascending order).
*
* @public
* @static
* @param {Date} a
* @param {Date} b
* @returns {number}
*/
export function compareDates(a, b) {
assert.argumentIsRequired(a, 'a', Date);
assert.argumentIsRequired(b, 'b', Date);
return a.getTime() - b.getTime();
}
/**
* Compares two numbers (in ascending order).
*
* @public
* @static
* @param {number} a
* @param {number} b
* @returns {number}
*/
export function compareNumbers(a, b) {
assert.argumentIsRequired(a, 'a', Number);
assert.argumentIsRequired(b, 'b', Number);
return a - b;
}
/**
* Compares two strings (in ascending order), using {@link string#localeCompare}.
*
* @public
* @static
* @param {string} a
* @param {string} b
* @returns {number}
*/
export function compareStrings(a, b) {
assert.argumentIsRequired(a, 'a', String);
assert.argumentIsRequired(b, 'b', String);
return a.localeCompare(b);
}
/**
* Compares two boolean values (in ascending order -- false first, true second).
*
* @public
* @static
* @param {boolean} a
* @param {boolean} b
* @returns {number}
*/
export function compareBooleans(a, b) {
assert.argumentIsRequired(a, 'a', Boolean);
assert.argumentIsRequired(b, 'b', Boolean);
if (a === b) {
return 0;
} else if (a) {
return 1;
} else {
return -1;
}
}
/**
* Compares two values for nulls (in ascending order -- null first, non-null second).
*
* @public
* @static
* @param {*|null} a
* @param {*|null} b
* @returns {number}
*/
export function compareNull(a, b) {
if (a === null && b !== null) {
return -1;
} else if (a !== null && b === null) {
return 1;
} else {
return 0;
}
}
/**
* Compares two objects, always returning zero.
*
* @public
* @static
* @param {*} a
* @param {*} b
* @returns {number}
*/
export function empty(a, b) {
return 0;
}