foop
Version:
interfaces that describe their intentions.
59 lines (57 loc) • 3.85 kB
JavaScript
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==