Javascript 仅当字符串是数字时才将字符串转换为数字

标签 javascript

如果我不知道字符串值是否为有效数字,如何将字符串转换为数字。如果字符串无效,我想保留该字符串。

示例

"0" -> 0
"0.5" -> 0.5
"100" -> 100
"abc" -> "abc" //  remains a string
" " -> " " // remains an empty string
"-1" -> -1 // I'd like to convert negative numbers too

我试过了

var str = " ";
var num = +str // num = 0
var num = Number(str) // num = 0
var num = parseInt(str) // num = NaN

看来我的问题是空间问题。我正在考虑使用 parseInt 但我认为使用 NaN 作为 Javascript 中的值可能不是一个好主意并且只保留字符串会更好。

最佳答案

您可以检查字符串数值是否等于该值。

var array = ["0", "0.5", "100", "abc", " "];

console.log(array.map(a => (+a).toString() === a ? +a : a));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于Javascript 仅当字符串是数字时才将字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258536/

相关文章:

javascript - 在php中提交后如何保留动态选择的值

javascript - d3 补间弧在函数调用中不起作用

javascript - 如何缩短 url 以仅使用 angular.js 过滤器显示域

Javascript:确定数组中的所有元素是否都是对象中的键

javascript - 挖掘 JavaScript 对象的路径

javascript - 在路由器主干中插入定时器功能

javascript - 简单的 jQuery 进度条

javascript - JQuery提交函数的泛化

javascript - knockout 到计算列的自定义绑定(bind)

javascript - 当我尝试重复字符串指定次数时,为什么 Javascript console.log 结果为 NaN