如何在JavaScript中将字符串转换为整数?
当前回答
如果您使用parseInt将浮点转换为科学符号,请小心!例如:
parseInt("5.6e-14")
将导致
5
而不是
0
其他回答
最快的
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%)。
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);
}
请参见以下示例。这将有助于回答您的问题。
Example Result
parseInt("4") 4
parseInt("5aaa") 5
parseInt("4.33333") 4
parseInt("aaa"); NaN (means "Not a Number")
通过使用parsent函数,它将只提供整数运算,而不提供字符串。
确保获得有效整数的最安全方法:
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
另一种选择是将值与自身进行双重XOR:
var i = 12.34;
console.log('i = ' + i);
console.log('i ⊕ i ⊕ i = ' + (i ^ i ^ i));
这将输出:
i = 12.34
i ⊕ i ⊕ i = 12