praseInt 和 逻辑或连用

这是做项目时遇到json文件转换 的一个小坑

将json 对象中的值 由字符串(数字字符串) 转换为 数值类型,如果是 转换失败 ,就返回 -1

这里的 parseInt 看起来非常简洁,但是存在一个小坑

复制代码
transformedData[fieldsToCheck[i]] = parseInt(originalValue)  || -1

由于我的数据中会牵扯很多默认配置,而在系统中,默认配置通常用 0来表示,因此在这里转换时 会将 字符串 "0" ,转换为 0

紧接着就是逻辑或处理 || 坑就来了,我的本意是用来放置NaN 的出现,所以才用||去赋值一个默认值

但是 0 在JS中默认 会表示为 false ,也就是 所有 字符串 "0" ,都会被转为 我的防空数字 -1这也就导致我了数据丢失

因此 JS 中 parseInt 和 或 判断连写 ,还是需要谨慎一些的,最好还是用 三元运算符 更合适

复制代码
transformedData[fieldsToCheck[i]] = parseInt(originalValue) !== NaN ? parseInt(originalValue) : -1
相关推荐
逝水无殇17 分钟前
C# 枚举(Enum)详解
开发语言·后端·c#
nianniannnn29 分钟前
c++复习自存--标准模板库STL
开发语言·c++·windows
努力努力再努力wz38 分钟前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
什巳1 小时前
JAVA练习275-乘积最大子数组
java·开发语言·数据结构·算法
lang201509281 小时前
Apache POI Word(docx) 实战教程:从入门到精通表格合并、图片插入与文档合并
java·开发语言·word
码农学院1 小时前
电商零售品牌的6个技术信号——从JSON-LD结构化数据到llms.txt,让AI搜索主动推荐你的产品
人工智能·json·零售
用户298698530141 小时前
前端 Excel 处理进阶:React 中合并与取消合并单元格的实现
前端·javascript·react.js
触底反弹2 小时前
面试被问 RAG 只能说出六个字?这篇用 100 行 Node.js 代码帮你彻底搞懂
javascript·人工智能·面试