为什么第二个for循环需要+ i?

时间:2014-11-12 20:58:59

标签: javascript loops

我理解所有这些以及它是如何工作的,除了:为什么第二个for循环需要" + i"?为什么不能用" + 1"?

替换它
text = "Blah blah blah blah blah blah Eric
blah blah blah Eric blah blah Eric blah blah
blah blah blah blah blah Eric";

var myName = "Eric";
var hits = [];

// Look for "E" in the text
for(var i = 0; i < text.length; i++) {
    if (text[i] === "E") {
        // If we find it, add characters up to
        // the length of my name to the array
        for(var j = i; j < (myName.length + i); j++) {
            hits.push(text[j]);
        }
    }
}

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

3 个答案:

答案 0 :(得分:2)

j循环被i偏移。

i从0到text.length,例如从0到100。

每当"E" ji循环到i + myName.length时,就会从50到54循环。

您也可以让j从0循环到myName.length并执行text[j + i]


请注意,此代码实际上并不查找"Eric",它会查找"E",然后记录接下来的4个字符。如果您的输入字符串为"EaEbEc foo",则结果为[ "EaEb", "EbEc", "Ec f" ]

答案 1 :(得分:0)

它做+ i的原因是因为代码试图将每次出现的Eric从文本推送到Hits,所以它想要计算myname.length字母。这也可以通过j从0开始并使用text[j + i]

来完成

答案 2 :(得分:0)

我等于文本内部的当前位置。例如

     v (i = 5 Starting from 0)
Blah Blah Blah

          v (i = 6)
Blah Blah Eric Blah

所以i + name.length标志着Word的结尾

          v->v (i=11 -> i+lenth=14)
Blah Blah Eric Blah

如果你拿+1,你会得到

 v<-------v (i=11 -> 1)
Blah Blah Eric Blah