我试图理解嵌套的 forloops,我发现这段代码应该很简单,我希望你确保我理解它。
var maximum = function(arr){
var out;
for(var i = 0; i < arr.length; i++){
out = true;
console.log(i)
for(var j = 0; j < arr.length; j++){
if(arr[i] < arr[j]){
// console.log(i, j)
out = false;
// console.log(arr[i], arr[j], " out ", out)
}
}
if(out) return arr[i];
}
// return null;
}
console.log(maximum([1,2,5]))
首先我不确定他们为什么定义 out = true
但我现在想理解循环
所以对于第一次迭代
i
设置为 0 和 out
设置为 true 然后我们进入第二个 for 循环
我= 0
在第二个 forloop 中:for(var j = 0; j < arr.length; j++){
我们测试(arr[i] < arr[j])
3次为数组长度
内部循环中的第一个测试:arr[0] = 1 < arr[0] = 1 ==false(所以我们什么都不做?不应该保持 true 我们返回 if(out) return arr[i];
吗?)
内循环中的第二次测试 arr[0] = 1 < arr[1] = 2 == true.. set out
为假
内部循环中的第 3 次测试 arr[0] = 1 < arr[2] = 5 == true .. set out
为假
然后我们去制作i
1
然后我们测试 arr[i] = 2 < arr[j] 是 1 吗? false 我们不打算 false
是 arr[i] = 2 < arr[j] 还是 2? false 我们不打算 false
是 arr[i] = 2 < arr[j] 还是 5?是的,我们设置了out
为真
然后我们设置i
至 2
到达 [2] = 5
是 arr[2] 是 5 < arr[0] 是 1 这是假的所以 out 仍然是真的
是 arr[2] 是 5 < arr[1] 是 2 这是假的所以 out 仍然是真的
是 arr[2] 是 5 < arr[2] 是 5 这是假的所以 out 仍然是真的
嵌套循环的更正过程是什么?
最佳答案
是的,您已经掌握了要点。内部循环(使用 j
作为计数器变量的循环)将运行 3 次,每次外部循环(i
循环)运行一次。
理解这一点的更简单方法是运行这段代码:
for (var i = 0; i < 3; i += 1){
console.log("outer loop")
for (var j = 0; j < 3; j += 1){
console.log("inner loop")
}
}
这使您可以只关注嵌套循环,而不是绊线变量以及您发布的原始代码中的此类变量。
关于javascript - 分解这个嵌套的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34057086/