我理解所有这些以及它是如何工作的,除了:为什么第二个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);
}
答案 0 :(得分:2)
j
循环被i
偏移。
i
从0到text.length
,例如从0到100。
每当"E"
j
从i
循环到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