我的javascript函数陷入循环中。。。

我的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

我很难理解我的逻辑哪里出了问题!当我试图对数组中段落中的单词施加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;

    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
中不是表达式的一部分,所以对它进行预递增或后递增都不重要。谢谢你你也是对的,我忘了更新我的计数器。现在都修好了!谢谢你,里克,你也是对的,我忘了更新我的计数器。现在都修好了!你好,迈克,非常感谢你的回答,这确实是个问题,现在可以工作了你好,迈克,非常感谢你的回答,这确实是个问题,现在可以工作了