我的javascript函数卡在循环中...

时间:2013-07-11 07:23:17

标签: 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;

    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;  
}

3 个答案:

答案 0 :(得分:3)

如果字长小于4,则代码​​会记录一条消息,但不会更新i,因此下一次迭代将从同一点开始,并在同一点失败。

我建议另一种选择,但目前尚不清楚你打算如何处理这种情况。

答案 1 :(得分:0)

if (word.length < 4)
{
  console.log('too short')
}
else
{
  ...

如果你进入这种情况,我的计数器不会改变。检查你每次都不要进入这种情况

答案 2 :(得分:0)

你在if语句中错过了i = j

if (word.length < 4)
{
  console.log('too short')

i = j  // You missed this

}