如何在JavaScript中将字符串转换为整数?


当前回答

function parseIntSmarter(str) {
    // ParseInt is bad because it returns 22 for "22thisendsintext"
    // Number() is returns NaN if it ends in non-numbers, but it returns 0 for empty or whitespace strings.
    return isNaN(Number(str)) ? NaN : parseInt(str, 10);
}

其他回答

尝试parseInt。

var number = parseInt("10", 10); //number will have value of 10.

我们可以使用+(stringOfNumber)而不是parseInt(stringOfNumber)。

示例:+(“21”)返回int值为21,类似于parseInt(“21)。

我们也可以使用这个一元“+”运算符来解析浮点数。。。

另一种选择是将值与自身进行双重XOR:

var i = 12.34;
console.log('i = ' + i);
console.log('i ⊕ i ⊕ i = ' + (i ^ i ^ i));

这将输出:

i = 12.34
i ⊕ i ⊕ i = 12

将数字的乘法与各自的十次幂相加:

即:123=100+20+3=1100+2+10+31=1*(10^2)+2*(10^1)+3*(10^0)

function atoi(array) {

    // Use exp as (length - i), other option would be
    // to reverse the array.
    // Multiply a[i] * 10^(exp) and sum

    let sum = 0;

    for (let i = 0; i < array.length; i++) {
        let exp = array.length - (i+1);
        let value = array[i] * Math.pow(10, exp);
        sum += value;
    }

    return sum;
}

尝试parseInt函数:

var number = parseInt("10");

但有一个问题。如果您尝试使用parseInt函数转换“010”,它将检测为八进制数,并将返回数字8。因此,需要指定基数(从2到36)。在这种情况下,底座10。

parseInt(string, radix)

例子:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false

请注意,parseInt在解析任何有效数据后忽略错误数据。此guid将解析为51:

var result = parseInt('51e3daf6-b521-446a-9f5b-a1bb4d8bac36', 10) == 51; // Returns true