为什么不执行此循环?

时间:2014-01-07 15:24:48

标签: javascript

只是练习一些for循环,我不确定它为什么没有输出:

['']

这是代码:

var text = "This is a long piece of Liam text with a bit of Liam text in the Liam";
var myName = "Liam";
var hits = [""]

for (var i=0; i >= text.length; i++)
{
   if (myName[i] === "L")
   {
       for (var j=i; j < (myName.length + i); j++)
       {
           hits.push(i);
       }
   }
}

if (hits.length === 0)
{
    console.log("Your name wasn't found!");
}

else 
{
    console.log(hits);
}

我认为我的推送功能实际上是不是正确地将字母推入数组?

5 个答案:

答案 0 :(得分:4)

for (var i=0; i >= text.length; i++)

应该是

for (var i=0; i < text.length; i++)

答案 1 :(得分:3)

就像一个FYI,你可以这样做:

text.indexOf(myName) !== -1; // true if myName occurs in text

或者,如果你想变得非常聪明:

text.match(new RegExp("\b" + myName + "\b")); // \b = word boundary = amazing
// wont match "NotLiam", will match "Hi, I'm Liam."

答案 2 :(得分:1)

for(var i = 0; i&gt; = text.length; i ++)

实际上意味着变量i将从0开始,每次在执行代码块之前检查是否满足条件i&gt; = text.length,如果条件不成立,则代码块将不会执行。 i ++的最后一部分意味着在每次迭代后定义的代码块之后,运行此语句。

由于文本长度大于0,因此第一次检查i(等于0)大于或等于文本长度(即69)失败,并且永远不会调用push。

答案 3 :(得分:0)

for (var i=0; i >= text.length; i++)
{
  if (myName[i] === "L")
   {
     for (var j=i; j < (myName.length + i); j++)
     {
       hits.push(i);
     }
   }
}

for循环错误

它应该是:

  for (var i=0; i <= text.length; i++)

答案 4 :(得分:0)

for (var i=0; i <= text.length; i++)
{
   if (text[i] === "L")
   {
       for (var j=i; j < (myName.length + i); j++)
       {
           hits.push(text[j]);
       }
   }
}

第二个嵌套for循环中的代码也是错误的 - 改为:

for (var j=i; j < (myName.length + i); j++)
       {
           hits.push(i);
       }