【问题标题】:My javascript function gets stuck in a loop...我的 javascript 函数陷入循环...
【发布时间】:2013-07-11 07:23:16
【问题描述】:

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

【问题讨论】:

  • 我认为应该是 i++ 而不是 ++i
  • 你能用文字解释一下你想在这里实现什么吗?
  • 并添加一些 HTML 代码。
  • 为此创建一个 jsfiddle 并发布链接.... 包含数据,以便人们可以使用它。 jsfiddle.net
  • 此代码中的@GintasK i 不是表达式的一部分,因此预先递增或后递增都没有关系。

标签: javascript function loops logic


【解决方案1】:

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

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

【讨论】:

  • 你好,麦克,非常感谢你的回答,确实是问题所在,现在可以了
【解决方案2】:
if (word.length < 4)
{
  console.log('too short')
}
else
{
  ...

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

【讨论】:

  • 谢谢你,Ric 你也是对的,我忘了更新到我的柜台。现在都修好了!
【解决方案3】:

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

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

i = j  // You missed this

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2017-12-05
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多