UNPKG

foop

Version:

interfaces that describe their intentions.

59 lines (57 loc) 3.85 kB
var isUndefined = require('../../is/undefined') /** * @since 5.0.0-beta.6 * @name defaultComparator * @alias defaultComparer * @memberOf sort * @memberOf loop * * {@link https://github.com/facebook/immutable-js/blob/master/src/Operations.js#L875 immutable-default-comparator} * {@link https://github.com/mobxjs/mobx/blob/master/src/types/comparer.ts mobx-default-comparer} * @see {@link mobx-default-comparer} * @see {@link immutable-default-comparator} * * @param {number | undefined} a compare to b * @param {number | undefined} b compare to a * @return {number} 0 | 1 | -1 * * @example * * /// a > b * defaultComparator(1, 2) * //=> 1 * * @example * * /// a < b * defaultComparator(2, 1) * //=> -1 * * @example * * /// a == b * defaultComparator(1, 1) * //=> 0 * * @example * * defaultComparator(undefined, undefined) //=> 0 * defaultComparator(undefined, 1) //=> 1 * defaultComparator(1, undefined) //=> -1 * */ module.exports = function defaultComparator(a, b) { if (isUndefined(a) && isUndefined(b)) { return 0 } else if (isUndefined(a)) { return 1 } else if (isUndefined(b)) { return -1 } else { return a > b ? 1 : a < b ? -1 : 0 } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdENvbXBhcmF0b3IuanMiLCJzb3VyY2VzIjpbImRlZmF1bHRDb21wYXJhdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vLi4vaXMvdW5kZWZpbmVkJylcblxuLyoqXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKiBAbmFtZSBkZWZhdWx0Q29tcGFyYXRvclxuICogQGFsaWFzIGRlZmF1bHRDb21wYXJlclxuICogQG1lbWJlck9mIHNvcnRcbiAqIEBtZW1iZXJPZiBsb29wXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9pbW11dGFibGUtanMvYmxvYi9tYXN0ZXIvc3JjL09wZXJhdGlvbnMuanMjTDg3NSBpbW11dGFibGUtZGVmYXVsdC1jb21wYXJhdG9yfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tb2J4anMvbW9ieC9ibG9iL21hc3Rlci9zcmMvdHlwZXMvY29tcGFyZXIudHMgbW9ieC1kZWZhdWx0LWNvbXBhcmVyfVxuICogQHNlZSB7QGxpbmsgbW9ieC1kZWZhdWx0LWNvbXBhcmVyfVxuICogQHNlZSB7QGxpbmsgaW1tdXRhYmxlLWRlZmF1bHQtY29tcGFyYXRvcn1cbiAqXG4gKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gYSBjb21wYXJlIHRvIGJcbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBiIGNvbXBhcmUgdG8gYVxuICogQHJldHVybiB7bnVtYmVyfSAwIHwgMSB8IC0xXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIC8vLyBhID4gYlxuICogICBkZWZhdWx0Q29tcGFyYXRvcigxLCAyKVxuICogICAvLz0+IDFcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgLy8vIGEgPCBiXG4gKiAgIGRlZmF1bHRDb21wYXJhdG9yKDIsIDEpXG4gKiAgIC8vPT4gLTFcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgLy8vIGEgPT0gYlxuICogICBkZWZhdWx0Q29tcGFyYXRvcigxLCAxKVxuICogICAvLz0+IDBcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgZGVmYXVsdENvbXBhcmF0b3IodW5kZWZpbmVkLCB1bmRlZmluZWQpIC8vPT4gMFxuICogICBkZWZhdWx0Q29tcGFyYXRvcih1bmRlZmluZWQsIDEpICAgICAgICAgLy89PiAxXG4gKiAgIGRlZmF1bHRDb21wYXJhdG9yKDEsIHVuZGVmaW5lZCkgICAgICAgICAvLz0+IC0xXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJhdG9yKGEsIGIpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKGEpICYmIGlzVW5kZWZpbmVkKGIpKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBlbHNlIGlmIChpc1VuZGVmaW5lZChhKSkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgZWxzZSBpZiAoaXNVbmRlZmluZWQoYikpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogYSA8IGIgPyAtMSA6IDBcbiAgfVxufVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQ2pELE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0VBQ2hELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNwQyxPQUFPLENBQUM7R0FDVDtPQUNJLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3ZCLE9BQU8sQ0FBQztHQUNUO09BQ0ksSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDdkIsT0FBTyxDQUFDLENBQUM7R0FDVjtPQUNJO0lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7R0FDbEM7Q0FDRjsifQ==