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


当前回答

在JavaScript中,您可以执行以下操作:

解析Int

parseInt("10.5") // Returns 10

与1相乘

var s = "10";
s = s*1;  // Returns 10

使用一元运算符(+)

var s = "10";
s = +s;  // Returns 10

使用按位运算符

(注:在2140000000之后开始破裂。示例:~~“2150000000”=-214967296)

var s = "10.5";
s = ~~s; // Returns 10

使用Math.floor()或Math.ceil()

var s = "10";
s = Math.floor(s) || Math.ceil(s); // Returns 10

其他回答

如果您使用parseInt将浮点转换为科学符号,请小心!例如:

parseInt("5.6e-14") 

将导致

5 

而不是

0

我只在字符串前加了一个加号(+),这就是解决方案!

+"052254" // 52254

确保获得有效整数的最安全方法:

let integer = (parseInt(value, 10) || 0);

示例:

// Example 1 - Invalid value:
let value = null;
let integer = (parseInt(value, 10) || 0);
// => integer = 0
// Example 2 - Valid value:
let value = "1230.42";
let integer = (parseInt(value, 10) || 0);
// => integer = 1230
// Example 3 - Invalid value:
let value = () => { return 412 };
let integer = (parseInt(value, 10) || 0);
// => integer = 0

以下是最简单的解决方案

let myNumber = "123" | 0;

更简单的解决方案

let myNumber = +"123";

最快的

var x = "1000"*1;

Test

这里有一些速度比较(仅限macOS)…:)

对于Chrome,“plus”和“mul”是最快的(>700000,00运算/秒),“Math.floor”是最慢的。对于Firefox,“plus”是最慢的(!)“mul”是最快的(>900000000操作/秒)。在Safari中,“parseInt”是最快的,“number”是最慢的(但结果非常相似,>130000<31000000)。因此Safari将字符串转换为int比其他浏览器慢10倍以上。所以获胜者是“mul”:)

您可以通过此链接在浏览器上运行它https://jsperf.com/js-cast-str-to-number/1

我还测试了var x=~~“1000”;。在Chrome和Safari上,它比var x=“1000”*1慢一点(<1%),在Firefox上则快一点(<1%)。