Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / exotic   js

Repository URL to install this package:

Version: 2.0.8 

/ src / types / primitive / number / cast / toInteger.ts

import isNaN from '../check/isNaN'
import toNumber from './toNumber'

/**
 * @name toInteger
 * @alias toInt
 *
 * @since 5.0.0-beta.6
 * @memberOf cast
 *
 * @param {*} x anything
 * @return {number} Number(x) if x is not nan
 *
 * {@link https://github.com/andrewplummer/Sugar/blob/master/lib/common.js#L322 sugar-topositiveinteger}
 * {@link https://github.com/lodash/lodash/blob/master/toInteger.js lodash-tointeger}
 * {@link https://github.com/chriso/validator.js/blob/master/src/lib/toInteger.js validator-tointeger}
 * {@link https://tc39.github.io/ecma262/#sec-tointeger emca-tointeger}
 * @see {@link emca-tointeger}
 * @see {@link validator-tointeger}
 * @see {@link lodash-tointeger}
 * @see {@link sugar-topositiveinteger}
 * @see cast/number
 * @see is/NaN
 *
 * @example
 *
 *   toInteger(10)         // => 10
 *   toInteger(NaN)        // => +0
 *   toInteger(+Infinity)  // => +Infinity
 *   toInteger('100')      // => +100
 *
 *  @example
 *
 *   toInteger(3.2)
 *   //=> 3
 *
 *   toInteger(Number.MIN_VALUE)
 *   //=> 0
 *
 *   toInteger(Infinity)
 *   //=> 1.7976931348623157e+308
 *
 *   toInteger('3.2')
 *   //=> 3
 *
 */
function toInteger(x: any): number {
  const nummy = toNumber(x)

  if (isNaN(nummy)) {
    return +0
  } else if (nummy === 0 || nummy === -Infinity || nummy === +Infinity) {
    return nummy
  } else {
    return Math.sign(nummy) * Math.floor(Math.abs(nummy))
  }
}

export { toInteger }
export default toInteger