这是我的代码:
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for (let i = 0; i < arr.length; i++) {
for (let y = i + 1; y < arr.length; y++) {
for (let x = y + 1; x < arr.length; x++) {
console.log(`${arr[i]}${arr[y]}${arr[x]} ${i} ${y} ${x}`)
}
}
}
我不明白为什么我的第一个for
循环只会在“ e”迭代并停止之前运行。所以最后一行看起来像这样:efg 4 5 6
。
据我所知,它之所以停止,是因为最后一个for
循环达到了极限,使得倒数第二个也停止了,因为没有更多的代码可以运行,这使得第一个也停止了。
那么,我是否可以假设这一点?
是因为嵌套的for
循环用完了吗?
这意味着我可以做类似i < arr.length - 2
和y < arr.length - 1
和x < arr.length
的事情,这没有什么不同?
发布后,我意识到console.log
在最后一个嵌套的for
循环上,并且到达第一个嵌套循环的末尾,这就是为什么我看不到输出的原因。这意味着,第一个循环运行了多久并没有关系,因为x将会提前两位。
答案 0 :(得分:1)
您以为# Create a form instance with POST data.
>>> a = Author()
>>> f = AuthorForm(request.POST, instance=a) <-- Set the instance model here
# Create and save the new author instance. There's no need to do anything else.
>>> new_author = f.save()
和i
正在停止是不正确的...它们不是,它们将继续按照您的期望遍历每个值
这是因为当y
变为5时,意味着i
从6(5 + 1)开始,这意味着y
从7(6 +1)开始。
由于7不是x
,< arr.length
循环不会运行...因此您不会获得控制台输出。
如果您运行以下代码段,则将控制台日志放在x
循环中...这样您就可以看到i
确实遍历了所有值
i