toInteger.js

import toNumber from './toNumber';
/**
 * 转换 `value` 为一个整数。
 *
 * 注意: 这个方法基于 [ToIntegerOrInfinity](https://tc39.es/ecma262/#sec-tointegerorinfinity) ,区别在于 `-0` 会返回 `-0`。
 *
 * @alias module:Util.toInteger
 * @since 1.0.0
 * @param {*} value 要转换的值。
 * @returns {number} 转换后的整数。
 * @example
 *
 * toInteger(3.2); // 3
 *
 * toInteger('3.2'); // 3
 *
 * toInteger(-0); // -0
 *
 * toInteger('-0'); // -0
 *
 * toInteger('0'); // 0
 *
 * toInteger(NaN); // 0
 *
 * toInteger(Infinity); // Infinity
 *
 * toInteger(-Infinity); // -Infinity
 *
 */
function toInteger(value) {
    const result = toNumber(value);
    // NaN -0 +0 0 Infinity -Infinity
    if (!result || result === Infinity || result === -Infinity) {
        return result === result ? result : 0;
    }
    const remainder = result % 1;
    return remainder ? result - remainder : result;
}
export default toInteger;