Javascript初学者查询。确定了有问题的代码行,但不知道为什么它不起作用

时间:2015-10-19 17:19:48

标签: javascript for-loop

我希望函数NumberAddition获取一个字符串并返回其中每个数字的数组。例如,参数“abc64,$ 22,22xyz0”应该返回数组[64,22,22,0]。我的for循环中的第4行是问题。
    它的目的是在索引一个数字后将i向上移动,这样它就不会再次超过相同的数字。如果我删除这一行,其余的工作正常,问题当然是一遍又一遍地计算相同的数字,直到我自然地通过它。
   为什么,当包含这一行时,只计算第一个数字(在我的例子中,返回将是[64])。我对解决它的其他方法不太感兴趣,而不是为什么这条线不能像我想象的那样起作用。谢谢!

function NumberAddition(str) { 
var array = [];
var nextInt;

  for(var i = 0; i < str.length; i++){
    nextInt = myParseInt(str.slice(i,10));
    array.push(nextInt);
    if (nextInt != null)
    i = str.indexOf(nextInt,i) + nextInt.length -1;
    else 
      break;
  }
  // code goes here  
  return array; 

}


function myParseInt(str){                   
 for(var i = 0; i < str.length; i++){

  if (!isNaN(str[i]))
    return parseInt(str.slice(i));
 }
   return NaN;
}

1 个答案:

答案 0 :(得分:3)

数字没有长度;字符串。 nextInt.length始终返回undefined,这意味着您将i设置为NaN。请尝试使用nextInt.toString().length