javascript - 如何将字符串转换为正确类型的元素数组
问题描述
我正在尝试将字符串转换为正确类型的元素数组。
元素可以是字符串或数字。
示例代码:
let str = "foo,12,hello,3.14,world,0"
let arr = str.split(",");
console.log(arr);
我得到的结果:
["foo", "12", "hello", "3.14", "world", "0"]
我想要的结果:
["foo", 12, "hello", 3.14, "world", 0]
有没有简单的方法来实现这一目标?
解决方案
你映射它,然后检查它是否是 nan isNaN
。如果它是一个字符串,否则它是一个数字
let str = "foo,12,hello,3.14,world,0"
let arr = str.split(",").map(item => isNaN(+item) ? item : +item);
console.log(arr)
如果你想知道+
做什么:
一元加号运算符将其操作数转换为数字类型。
如果它是一个字符串,它将返回NaN
,因为你不能NaN
像这样检查NaN === NaN
你需要用内置方法检查它isNaN
console.log(NaN === NaN);
console.log(NaN == NaN);
console.log(isNaN(NaN));
console.log(isNaN(+"i am an string"));
推荐阅读
- javascript - React 或 Next.js 是否在内部清理类属性?
- c# - 从 MVC 路由器中的虚拟路径检索路由数据
- docker - 具有动态链接程序的多阶段 Docker 构建
- arrays - 使用 np.where 子集 3d 数组
- groovy - Groovy 多值哈希映射
- mongodb - 获取字符串日期之间的数据 MongoDB
- python - Python Pandas 正则表达式特定字符串
- python - 带有 SQLAlchemy 的 urllib request.urlopen(url).read() 存储的是十六进制字符串而不是 HTML
- drools - 当问题与 .drl 'or' 子句相关时,是什么原因导致 ConstraintMatchTotal 无法添加约束匹配?
- django - 如何为未经授权的用户禁用(几乎)所有表单中的所有字段?