Javascript 如何将字符串值转换为混合数组中的数字
我有一个混合的值数组,所有的字符串值。我想获取表示数字的字符串值,并将它们转换为整数。这是我的阵列:Javascript 如何将字符串值转换为混合数组中的数字,javascript,arrays,Javascript,Arrays,我有一个混合的值数组,所有的字符串值。我想获取表示数字的字符串值,并将它们转换为整数。这是我的阵列: const data = 'new york;10.99;2000'; I split it transforming it: const transData = data.split(';'); transData = ["new york", "10.99", "2000"] 我想对其进行迭代,并返回两个干净的int,其中包含所有非数字字符串的字符串值。我有点不知所措。我知道这对一些
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值。即使使用“如果”检查,我似乎也无法过滤或跳过它,例如:
for(let i=0; i < transData.length; i++)
if(transData[i] != NaN){
transData[i] = + transData[i];
}else{continue};
NaN===NaN
将始终返回false
。要检查元素是否为NaN
,需要使用isNaN
函数
const transData=[“纽约”、“10.99”、“2000”];
for(设i=0;i console.log(transData)
您只需使用|
运算符和.map()
即可获得所需的输出。由于NaN
是一个假值,因此如果无法通过number
将其转换为数字,它将返回考虑中的字符串:
const data='纽约;10.99;2000';
const result=data.split(“;”).map(s=>Number(s)| | s);
控制台日志(结果)代码>使用MAP函数尝试类似的操作
data.split(';').map((x)=>{
x= !isNaN(x)? parseFloat(x):x;
return x;
})
是的,马希尔·阿里的方法很好。我刚刚修改了所有代码)
const data='纽约;10.99;2000;0;-1;-2.45';
设transData=Array
.from(data.split(“;”),x=>parseFloat(x))
.filter(值=>!Number.isNaN(值));
console.log(transData)代码>精彩。我觉得这比我做的要容易得多。非常感谢穆罕默德@布拉德利:这不会将'0'
转换为数字。因为Number('0')
将返回0
,并且它是一个错误的值,所以您是对的,先生。它似乎对我有效,因为我没有0。谢谢你向我指出这一点!我喜欢这个。我在这里学到了很多关于地图的知识。谢谢杰迪普!这就是我的大脑希望看到的解决方案,使用循环。谢谢马希尔!美好的解释得很清楚。“Array.from()-从字符串数组创建数字数组。Array.filter()-从数字数组中删除NaN”
data.split(';').map((x)=>{
x= !isNaN(x)? parseFloat(x):x;
return x;
})