无法从JS中的函数中删除NaN值

时间:2016-03-20 19:50:26

标签: javascript arrays parsing nan

这个函数的目的是删除给定String的空格,然后将其转换为Number,最后将数字的每个字符推入一个空数组(即“24532”,应该推入数组中以下[2,4,5,3,2])。但是,当我在函数末尾控制输出数组时 - 我在输出数组中接收NaN值。功能的每一步对我来说都是有意义的,但我不确定我的错误在哪里生活。任何帮助将不胜感激!

function convert(numbers){
   var notString = parseInt(numbers.replace(/\s+/g, ''), 10),
   sNumber = notString.toString(),
   output =[];

   console.log(sNumber);

     for(var i = 0; i < sNumber.length; i+=1) {
       output.push(+sNumber.charAt[i]);    

   }
    console.log(output);

   } 

   convert("1 2 2 2 2");

5 个答案:

答案 0 :(得分:2)

为什么不使用String#split()

&#13;
&#13;
function convert(numbers) {
    return numbers.trim().split(/\s+/).map(Number);
}

document.write('<pre>' + JSON.stringify(convert("   1 2 2 2 2  "), 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 1 :(得分:1)

为什么不喜欢这个

function convert(numbers){
  return numbers.replace(/\s+/g,'').split('');
}

console.log(convert("1 2 2 2 2"));

实际上,如果它总是只有1个空格字符,你可以这样做

console.log("1 2 2 2 2".split(' '));

答案 2 :(得分:1)

希望这会有所帮助     https://jsfiddle.net/x0mubx4q/

output.push(sNumber[i]);   

问题在于.chartAt()函数。这将返回一个字符串。

答案 3 :(得分:0)

在推送实例中删除sNumber之前的+。而不是console.log使用console.dir

echo '<option value="', $option['value'], '"', $meta == $option['value'] ? ' selected="selected"' : '', '>', $option['name'], '</option>';

尝试以上方法。

答案 4 :(得分:0)

您应该使用split函数作为@Nina,但如果您对错误的位置感兴趣,可以试试这个:

替换

charAt[i]

charAt(i) // parentheses

charAt是一个函数,您需要使用括号()来调用它