UNPKG

foop

Version:

interfaces that describe their intentions.

63 lines (59 loc) 4.37 kB
var isNaN = require('../is/NaN') var toNumber = require('./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) { var number = toNumber(x) if (isNaN(number)) { return +0 } else if (number === 0 || number === -Infinity || number === +Infinity) { return number } else { return Math.sign(number) * Math.floor(Math.abs(number)) } } module.exports = toInteger //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9JbnRlZ2VyLmpzIiwic291cmNlcyI6WyJ0b0ludGVnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNOYU4gPSByZXF1aXJlKCcuLi9pcy9OYU4nKVxuY29uc3QgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJylcblxuLyoqXG4gKiBAbmFtZSB0b0ludGVnZXJcbiAqIEBhbGlhcyB0b0ludFxuICpcbiAqIEBzaW5jZSA1LjAuMC1iZXRhLjZcbiAqIEBtZW1iZXJPZiBjYXN0XG4gKlxuICogQHBhcmFtIHsqfSB4IGFueXRoaW5nXG4gKiBAcmV0dXJuIHtudW1iZXJ9IE51bWJlcih4KSBpZiB4IGlzIG5vdCBuYW5cbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FuZHJld3BsdW1tZXIvU3VnYXIvYmxvYi9tYXN0ZXIvbGliL2NvbW1vbi5qcyNMMzIyIHN1Z2FyLXRvcG9zaXRpdmVpbnRlZ2VyfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyL3RvSW50ZWdlci5qcyBsb2Rhc2gtdG9pbnRlZ2VyfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc28vdmFsaWRhdG9yLmpzL2Jsb2IvbWFzdGVyL3NyYy9saWIvdG9JbnRlZ2VyLmpzIHZhbGlkYXRvci10b2ludGVnZXJ9XG4gKiB7QGxpbmsgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbnRlZ2VyIGVtY2EtdG9pbnRlZ2VyfVxuICogQHNlZSB7QGxpbmsgZW1jYS10b2ludGVnZXJ9XG4gKiBAc2VlIHtAbGluayB2YWxpZGF0b3ItdG9pbnRlZ2VyfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLXRvaW50ZWdlcn1cbiAqIEBzZWUge0BsaW5rIHN1Z2FyLXRvcG9zaXRpdmVpbnRlZ2VyfVxuICogQHNlZSBjYXN0L251bWJlclxuICogQHNlZSBpcy9OYU5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgdG9JbnRlZ2VyKDEwKSAgICAgICAgIC8vID0+IDEwXG4gKiAgIHRvSW50ZWdlcihOYU4pICAgICAgICAvLyA9PiArMFxuICogICB0b0ludGVnZXIoK0luZmluaXR5KSAgLy8gPT4gK0luZmluaXR5XG4gKiAgIHRvSW50ZWdlcignMTAwJykgICAgICAvLyA9PiArMTAwXG4gKlxuICogIEBleGFtcGxlXG4gKlxuICogICB0b0ludGVnZXIoMy4yKVxuICogICAvLz0+IDNcbiAqXG4gKiAgIHRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKVxuICogICAvLz0+IDBcbiAqXG4gKiAgIHRvSW50ZWdlcihJbmZpbml0eSlcbiAqICAgLy89PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqICAgdG9JbnRlZ2VyKCczLjInKVxuICogICAvLz0+IDNcbiAqXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih4KSB7XG4gIGNvbnN0IG51bWJlciA9IHRvTnVtYmVyKHgpXG5cbiAgaWYgKGlzTmFOKG51bWJlcikpIHtcbiAgICByZXR1cm4gKzBcbiAgfVxuICBlbHNlIGlmIChudW1iZXIgPT09IDAgfHwgbnVtYmVyID09PSAtSW5maW5pdHkgfHwgbnVtYmVyID09PSArSW5maW5pdHkpIHtcbiAgICByZXR1cm4gbnVtYmVyXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIE1hdGguc2lnbihudW1iZXIpICogTWF0aC5mbG9vcihNYXRoLmFicyhudW1iZXIpKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyXG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDbENBLEdBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkN0QyxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUU7RUFDcEJBLEdBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQzs7RUFFMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDakIsT0FBTyxDQUFDLENBQUM7R0FDVjtPQUNJLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxRQUFRLElBQUksTUFBTSxLQUFLLENBQUMsUUFBUSxFQUFFO0lBQ3JFLE9BQU8sTUFBTTtHQUNkO09BQ0k7SUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0dBQ3hEO0NBQ0Y7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTOyJ9