Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
chain-able-deps / src / loop / sort / defaultComparator.ts
Size: Mime:
import { isUndefined } from '../../is'

/**
 * @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
 *
 */
export default function defaultComparator(
  a?: number | undefined,
  b?: number | undefined
) {
  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
  }
}