如何在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);
}
其他回答
在我看来,没有答案涵盖所有边缘情况,因为解析浮点值会导致错误。
function parseInteger(value) {
if(value === '') return NaN;
const number = Number(value);
return Number.isInteger(number) ? number : NaN;
}
parseInteger("4") // 4
parseInteger("5aaa") // NaN
parseInteger("4.33333") // NaN
parseInteger("aaa"); // NaN
尝试parseInt。
var number = parseInt("10", 10); //number will have value of 10.
最快的
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%)。
以下是最简单的解决方案
let myNumber = "123" | 0;
更简单的解决方案
let myNumber = +"123";
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);
}
推荐文章
- 在React Native中使用Fetch授权头
- 为什么我的球(物体)没有缩小/消失?
- 如何使用jQuery检测页面的滚动位置
- if(key in object)或者if(object. hasownproperty (key)
- 一元加/数字(x)和parseFloat(x)之间的区别是什么?
- angularjs中的compile函数和link函数有什么区别
- 删除绑定中添加的事件监听器
- 很好的初学者教程socket.io?
- HtmlSpecialChars在JavaScript中等价于什么?
- 如何删除表中特定列的第一个字符?
- React: 'Redirect'没有从' React -router-dom'中导出
- 如何在React中使用钩子强制组件重新渲染?
- 我如何使用Jest模拟JavaScript的“窗口”对象?
- 我应该如何从字符串中删除所有的前导空格?- - - - - -斯威夫特
- 我如何等待一个承诺完成之前返回一个函数的变量?