我一直在努力编码一段时间,功能似乎完全没问题,但循环很痛苦。
我非常理解这一点,除了以j = i开头的一行,它指的是什么?
text = "Blah blah blah blah blah blah Eric \
blah blah blah Eric blaeh blah Eric blah blah \
blah blah blah blah blah Eric";
var myName = "Eric";
var hits = [];
for(var i = 0; i < text.length; i++) {
if (text[i] === "E") {
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 :(得分:0)
不确定这是否是你的音乐会:j和i只是循环将运行的索引的占位符。当第二个for循环将j分配给i时,一旦第一个for循环循环,第二个for循环将从索引(文本中的位置)开始,我从第一个for循环中离开。
答案 1 :(得分:0)
外部循环,即定义var i = 0
的循环,循环遍历文本字符串的字符索引。对于每个字符索引,if语句检查它是否为&#34; E&#34;。当i
为30时,字符串索引30处的字符(text[i]
)是第一个E. if返回true并在大括号中运行代码。此时它启动一个新循环,j
设置为i
(即30),子循环运行,j
小于你的名字长度(4)加上i
(30),或34.该子循环的每次迭代都会将索引j
(text[j]
)的字母推送到hits
。
答案 2 :(得分:0)
这意味着对于外部循环(或i
循环)的每次迭代,j
变量最初将具有i
变量的值。因此,对于外部循环的第一次迭代,i
为0
,因此j
最初为0
,在第二次迭代i
为1
所以j
重新初始化为1
。等等。
答案 3 :(得分:0)
for循环的以下定义取自this page。
for(声明1;声明2;声明3){ 要执行的代码块}
语句1在循环(代码块)开始之前执行。
语句2定义了运行循环的条件(代码 块)。
语句3在循环(代码块)之后每次执行 已被执行。
在您的情况下,var j=i
在循环之前执行,因此text[j]
将在text[i]
开始,每次j
增加{{1}将是text[j]
之后的元素。
因此,迭代进行text[i]
- &gt; text[i]
- &gt; ... - &gt; text[i+1]