我已经编写了一个程序来对用户输入的数字进行排序。问题是,当我插入一个空格时,它会以数字0的形式存储在数组中。我试着设置了几个条件来防止这种情况发生,但似乎都没有效果。有什么解决方案吗?下面是我的代码中的一小段,我认为错误发生的地方以及应该设置某种条件的地方:stringArray = userInput.value.split(' '); numArray = stringArray.map(Number);
发布于 2017-07-04 20:03:51
由于Javascript的本质是弱类型语言,所以每次当您将值映射到代码中并将其强制为数字时,JS都会尝试将其转换为兼容的类型。因此,空格被转换为0。
在这种情况下,您可以做多件事。最简单的方法是在映射之前去掉任何空格。
我建议在映射之前过滤数组,例如:
stringArray.filter(function(value) {
return value.trim() !== '';
}).map(Number);
另一个想法是按照评论中的建议,使用RegExp
;)
发布于 2017-07-04 20:08:35
var numArray= stringArray.map(n=>parseInt(n,10));
只需使用parseInt,它更严格(在本例中返回NaN ),您可以过滤.So:
numArray=numArray.filter(e=>!isNaN(e));
https://stackoverflow.com/questions/44913280
复制相似问题