Javascript数组项到数字
我制作了一个程序,对用户输入的数字进行排序。问题是,当我插入一个空格时,它作为数字0存储在数组中。我试图设置一些条件来防止这种情况发生,但似乎没有任何效果。有解决办法吗? 下面是我的一段代码,我认为错误是在这里发生的,应该设置一些条件:Javascript数组项到数字,javascript,arrays,Javascript,Arrays,我制作了一个程序,对用户输入的数字进行排序。问题是,当我插入一个空格时,它作为数字0存储在数组中。我试图设置一些条件来防止这种情况发生,但似乎没有任何效果。有解决办法吗? 下面是我的一段代码,我认为错误是在这里发生的,应该设置一些条件: stringArray=userInput.value.split(“”); numArray=stringArray.map(数字)由于Javascript本质上是弱类型语言,每当您在代码中映射值并将其强制为数字时,JS都会尝试将其转换为兼容类型。因此,空空间
stringArray=userInput.value.split(“”);
numArray=stringArray.map(数字)代码>由于Javascript本质上是弱类型语言,每当您在代码中映射值并将其强制为数字时,JS都会尝试将其转换为兼容类型。因此,空空间将转换为0
在这种情况下,您可以执行多种操作。最简单的方法是在映射之前去掉任何空格
我建议在映射之前过滤数组,例如:
stringArray.filter(function(value) {
return value.trim() !== '';
}).map(Number);
另一个想法是按照注释中的建议,使用RegExp
;)去掉前面的空格
只需使用更严格的parseInt(在本例中返回NaN),即可进行筛选:
numArray=numArray.filter(e=>!isNaN(e));
userInput.value.replace(/\s{2,}/g',).split(“”)代码>核武器清空first@dandavis如果用户以spacemybad开头,则不能这样做(duh):userInput.value.trim().split(/\s+/)代码>使用parseInt转换为字符串。当split()
只会生成stringsYep数组时,它应该返回NaNdon,但我不明白为什么需要typeof
,你是对的。不必要的健康检查。调整了答案。或者简单地stringArray.filter(/./.test,/\S/).map(数字)代码>:pparSent()是在JS中将字符串转换为数字的最糟糕的方法,并且它不会过滤掉空字符串window.isNaN
也不会有多大帮助:[“3424”,isNaN.filter(isNaN)。join(0)==“尽管n=>Number(n)?@dandavis您的示例与上面的代码无关。@lee kowalkowski有一个区别。
numArray=numArray.filter(e=>!isNaN(e));