0

我无法理解我的逻辑在哪里失败!当我尝试对从数组中的段落中获得的单词施加 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;  
}
4

3 回答 3

3

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

我会建议一个替代方案,但目前尚不清楚您打算如何处理这种情况。

于 2013-07-11T07:30:54.220 回答
0
if (word.length < 4)
{
  console.log('too short')
}
else
{
  ...

如果您处于这种状态,则 i 计数器不会改变。检查你不要每次都处于这种状态

于 2013-07-11T07:32:24.607 回答
0

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

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

i = j  // You missed this

}
于 2013-07-11T07:37:35.433 回答