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