javascript - 如何将字符串值转换为混合数组中的数字
问题描述
我有一个混合的值数组,所有字符串值。我想获取表示数字的字符串值并将它们转换为整数。这是我的数组:
const data = 'new york;10.99;2000';
I split it transforming it:
const transData = data.split(';');
transData = ["new york", "10.99", "2000"]
我想对其进行迭代并返回两个干净的 int,并为所有非数字字符串返回一个字符串值。我有点难过。我知道这对某些人来说很容易,但我已经尝试过 forEach、for、map,但我仍然得到第一个数组成员的 NaN 值。即使使用“if”检查,我似乎也无法过滤或跳过它,例如:
for(let i=0; i < transData.length; i++)
if(transData[i] != NaN){
transData[i] = + transData[i];
}else{continue};
我知道这是如何工作的 transData[i] = + transData[i]; 我似乎无法用迭代/过滤器/映射/任何东西来自动化这件事。
非常感谢任何帮助。这些是用 javascript 思考大男孩/女孩的婴儿步骤。
以下是我尝试过的一些方法:
const data = 'new york;10.99;2000';
const transData = data.split(';');
// transData[1] = + transData[1];
// transData[2] = + transData[2];
console.log(transData);
const filteredTransData = transData.filter(data => data > 0);
filteredTransData.forEach((data, idx) => {
filteredTransData[idx] = + filteredTransData[idx];
解决方案
您可以简单地使用||
operator with.map()
来获得所需的输出。由于NaN
是一个虚假值,因此如果无法通过以下方式将其转换为数字,它将返回正在考虑的字符串Number
:
const data = 'new york;10.99;2000';
const result = data.split(";").map(s => Number(s) || s);
console.log(result);
正如@Maheer Ali 所指出的:
上述解决方案有一个局限性。它不会将字符串转换
"0"
为数字0
,因为 0 是一个虚假值。
因此,我们可能会使用发布的其他一些解决方案,或者我们可能会在使用此修改后的数组的位置显式应用零 (0) 检查。
推荐阅读
- django - 带有选择列表的 Django char 字段
- excel - VBA:(运行时错误 424:需要对象)提案自动化
- kdb - kdb - 求解 IRR 的求解器函数
- laravel - laravel Eloquent 关系查询与 whereHas
- pyqt5 - PYQT5 不会将 QPushButton.clicked.connect() 迭代到小部件列表
- excel - 我可以通过减去时间来给出 if 语句吗?
- java - 无限永不失效的热通量
- python - 有没有人对如何使用输入来确定列表中的位置有建议?
- node.js - 什么是相当于“server.js”文件的 TypeScript
- c# - 在 Entity Framework Core 上添加迁移时出现 NET 5 错误