javascript - 使用条件运算符检查某些值并将其转换为数字
问题描述
给定一个存储在变量“givenValue”中的字符串。如果都是数字,则将字符串转换为数字
(例如,'11' 转换为 11,'a1' 转换为 'a1')
并将其分配给变量 'value':
const value = givenValue - 0 === NaN ? givenValue : givenValue - 0;
但输出不是我所期望的:
const givenValue = 'a1';
console.log(value); // NaN
const givenValue = '1';
console.log(value); // 1
似乎在检查“if”条件时重新分配了“givenValue”的值,或者条件检查不起作用。
解决方案
不是完全数字但具有数字字符的字符串很可能会返回一个数字,而不是NaN
在许多情况下 - 请参阅该链接以获取有关算法工作原理的完整描述。可以说,它有点复杂,不是你要找的。(例如,您希望'123e456'
失败,但实际上这会给您Infinity
。空白也将被允许。)(此外,=== NaN
检查将始终返回false
,因为NaN
不等于任何东西)
相反,使用正则表达式来检查字符串是否只包含数字:
const value = /^\d+$/.test(givenValue) ? Number(givenValue) : givenValue;
如果您还想包括可能的小数,则添加一组可选的.
后跟数字:
const value = /^\d+(?:\.\d+)?$/.test(givenValue) ? Number(givenValue) : givenValue;
// ^^^^^^^^^^
推荐阅读
- django - Django 嵌套循环的迭代总数
- reactjs - MUI v5:带有系统属性的样式和 sx prop 之间是否存在性能差异?
- postgresql - Postgres - 从转储中恢复数据库时出错
- node.js - 如何从验证功能访问注册功能元素?
- docker - docker-ce 无法映射端口 - 表示端口正在使用中(即使没有使用)
- javascript - 使用 javascript 调整 3 张图像的大小
- java - 如何正确地将 java 集合转换为 Kotlin 语言
- python - 有没有办法使用索引和列名作为键从熊猫数据框中创建键值配对字典?
- python - Python 无法安装加密:命令错误,退出状态为 1
- apache-kafka - 消息没有被消费