我的javascript函数陷入循环中。。。
我很难理解我的逻辑哪里出了问题!当我试图对数组中段落中的单词施加word.length条件时,我陷入了一个无限循环。请让我知道你的想法,谢谢大家我的javascript函数陷入循环中。。。,javascript,function,loops,logic,Javascript,Function,Loops,Logic,我很难理解我的逻辑哪里出了问题!当我试图对数组中段落中的单词施加word.length条件时,我陷入了一个无限循环。请让我知道你的想法,谢谢大家 var str = document.getElementsByTagName('p')[0].innerHTML; console.log(str); function wordIndexes(str) { var result = []; var len = str.length; var i = 0, j, word
var str = document.getElementsByTagName('p')[0].innerHTML;
console.log(str);
function wordIndexes(str) {
var result = [];
var len = str.length;
var i = 0, j, word;
while (i < len) {
if (str[i] === ' ') {
++i;
}
else {
word = "";
for (j = i; j < len && str[j] !== ' '; ++j) {
word += str[j];
}
console.log(word.length);
//imposing length conditions
if (word.length < 4)
{console.log('too short')}
else {
result.push([i, word]);
i = j;
};
}
}
return result;
}
var str=document.getElementsByTagName('p')[0].innerHTML;
console.log(str);
函数wordindex(str){
var结果=[];
var len=str.length;
变量i=0,j,字;
而(我
如果字长小于4,您的代码将记录一条消息,但不会更新i
,因此下一次迭代将在同一点开始,并在同一点失败
我建议另一种方法,但不清楚您打算如何处理这种情况。如果字长小于4,您的代码将记录一条消息,但不会更新
I
,因此下一次迭代将在同一点开始,并在同一点失败
if (word.length < 4)
{
console.log('too short')
}
else
{
...
我会建议一个替代方案,但不清楚您打算如何处理这种情况。if(word.length<4)
if (word.length < 4)
{
console.log('too short')
}
else
{
...
{
console.log('太短')
}
其他的
{
...
如果在这种情况下运行,i计数器不会改变。请检查每次在这种情况下是否运行(word.length<4)
{
console.log('太短')
}
其他的
{
...
如果在这种情况下执行,i计数器不会改变。每次在If语句中遗漏i=j时,请检查是否在这种情况下执行
if (word.length < 4)
{
console.log('too short')
i = j // You missed this
}
if(字长<4)
{
console.log('太短')
你错过了这个
}
您在if语句中遗漏了i=j
if (word.length < 4)
{
console.log('too short')
i = j // You missed this
}
if(字长<4)
{
console.log('太短')
你错过了这个
}
应该是i++而不是++我想你能用文字解释一下你想在这里实现什么吗?并添加一些HTML代码。为此创建一个JSFIDLE并发布链接……包括数据以便人们可以使用。@GintasK在此代码i
中不是表达式的一部分,所以对它进行预递增或后递增都无关紧要。它是应该是i++而不是++我想你能用文字解释一下你想在这里实现什么吗?并添加一些HTML代码。为此创建一个JSFIDLE并发布链接……包括数据以便人们可以使用。@GintasK在此代码i
中不是表达式的一部分,所以对它进行预递增或后递增都不重要。谢谢你你也是对的,我忘了更新我的计数器。现在都修好了!谢谢你,里克,你也是对的,我忘了更新我的计数器。现在都修好了!你好,迈克,非常感谢你的回答,这确实是个问题,现在可以工作了你好,迈克,非常感谢你的回答,这确实是个问题,现在可以工作了