【问题标题】:Best way to check that a variable is only an integer in JavaScript [duplicate]检查变量是否只是JavaScript中的整数的最佳方法[重复]
【发布时间】:2012-11-06 21:19:19
【问题描述】:

可能重复:
How to check if a number is float or integer?

检查变量是否为整数的最佳方法是什么?

在 Python 中你可以这样做:

 if type(x) == int

在 JS 中是否有同样优雅的等价物?

【问题讨论】:

标签: javascript


【解决方案1】:

使用isNaN(不是数字——但要注意逻辑被否定)并与parseInt结合:

function is_int(x)
{
    return (!isNaN(x) && parseInt(x) == x)
}

作为suggested here,以下也可以:

function isInt(n) {
   return n % 1 === 0;
}

【讨论】:

    【解决方案2】:

    我没有测试过,但我建议:

    if (Math.round(x) == x) {
        // it's an integer
    }
    

    Simplistic JS Fiddle.

    【讨论】:

    • 稍微短一点,虽然不完全相同:if (~~x == x)
    • 如果您将'1' 放入该 jsFiddle,它会返回 true(在 Chrome 上)。我认为这是不正确的行为?
    • @AlastairPitts:不,因为==,它只是强制转换为数字,如果您不想将字符串转换为数字,请使用===
    • @elclanrs:哦,是的,我一直在 JS 中忘记这一点:/
    【解决方案3】:

    Javascript 提供 typeof

    https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof

       // Numbers
       typeof 37 === 'number';
       typeof 3.14 === 'number';
       typeof Math.LN2 === 'number';
       typeof Infinity === 'number';
       typeof NaN === 'number'; // Despite being "Not-A-Number"
       typeof Number(1) === 'number'; // but never use this form!
    

    【讨论】:

    • ...是的,但它永远不会导致“整数”...
    • 我认为“数字”足以满足我的实际需要。
    【解决方案4】:

    整数的 parseFloat() 和 parseInt() 等效项的数值相同。因此你可以这样做:

    function isInt(value){ 
        return (parseFloat(value) == parseInt(value)) && !isNaN(value);
    }
    

    然后

    if (isInt(x)) // do work
    

    【讨论】:

    • 你可以去掉 ? true : false; 并且会更短,并且应该仍然这样做。
    • 大声笑,是的,想多了,我会解决
    猜你喜欢
    • 2015-05-30
    • 2015-11-03
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2017-08-23
    • 1970-01-01
    相关资源
    最近更新 更多