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

Javascript初学者查询。识别出有问题的代码行,但不知道为什么它不起作用,javascript,for-loop,Javascript,For Loop,我希望函数NumberAddition获取一个字符串并返回其中每个数字的数组。例如,参数“abc64,$22,22xyz0”应该返回数组[64,22,22,0]。我的for循环中的第四行就是问题所在。 它的目的是在一个数字被索引后,将i向上移动字符串,这样它就不会再次遍历同一个数字。如果我删除了这一行,剩下的就可以了,当然问题是相同的数字会被一遍又一遍地计算,直到我自然地通过它。 为什么,当包含这一行时,只计算第一个数字(在我的示例中,返回值是[64])。我对解决这个问题的其他方法不太感兴趣,我

我希望函数NumberAddition获取一个字符串并返回其中每个数字的数组。例如,参数“abc64,$22,22xyz0”应该返回数组[64,22,22,0]。我的for循环中的第四行就是问题所在。
它的目的是在一个数字被索引后,将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;
}
函数编号附加(str){
var数组=[];
var nextInt;
对于(变量i=0;i
数字没有长度;字符串可以
nextInt.length
始终返回undefined,这意味着您将i设置为NaN。请改为尝试
nextInt.toString().length

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

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

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

你为什么不使用正则表达式来解决这个问题,有什么原因吗?@juvian,嗯,他确实说过他是个初学者。
“abc64,$22xyz0.match(/(\d+)/g).map(Number)
Debug
console.log(“i=”,str.indexOf(nextInt,i),“+”,nextInt.length,“-1;”
你不使用正则表达式来解决这个问题有什么原因吗?@juvian,嗯,他说他是个初学者。
“abc64,$22xyz0.match(/(\d+)/g).map(Number)
调试
控制台.log(“i=”,str.indexOf(nextInt,i),“+”,nextInt.length,“-1;”
你不使用正则表达式来解决这个问题有什么原因吗?@juvian,嗯,他说他是个初学者。
“abc64,$22xyz0.match(/(\d+)/g).map(Number)
调试
控制台.log(“i=”,str.indexOf(nextInt,i),“+”,nextInt.length,“-1;”
你不使用正则表达式来解决这个问题有什么原因吗?@juvian,嗯,他说他是个初学者。
“abc64,$22xyz0.match(/(\d+)/g).map(Number)
调试
控制台.log(“i=”,str.indexOf(nextInt,i),“+”,nextInt.length,“-1;”