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;iconsole.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;
})