javascript - 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,但我认为在Javascript中使用NaN作为值可能是一个坏主意,而直接保留字符串会更好。

最佳答案

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

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 - Javascript仅在字符串是数字的情况下才将字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258536/

相关文章:

javascript - 在 v-for 循环中使用 Vuetify v-btn 和加载器

javascript - 创建覆盖 View 并将其呈现在主干中的动态 div 中

javascript - 在保持 Bootstrap 折叠行为的同时单击 stopPropagation

javascript - 正常状态和检查元素上响应状态的$(window).width()之差

javascript - "You have included the Google Maps API multiple times"- 如何避免第二次通话?

javascript - 如何使用引用触发react-dropzone-component的open函数?

javascript - 表单重置无法使用 jquery

javascript - 从函数返回结果(javascript,nodejs)

javascript - Service Worker 无法在 'put' 上执行 'Cache'

javascript - gruntfile.js - grunt.registerTask