我希望函数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;
}
答案 0 :(得分:3)
数字没有长度;字符串。 nextInt.length
始终返回undefined,这意味着您将i设置为NaN。请尝试使用nextInt.toString().length
。