我一直在研究freecodecamp上的一些练习,但我仍然坚持使用这种嵌套来进行循环练习。我能够找到解决方案,但我不太明白。
有人可以向我解释变量J的第二个循环是如何工作的吗?我在线阅读说第一个for循环是外部数组,第二个是内部数组,但为什么停止两个for循环,为什么不是三个?
function multiplyAll(arr) {
var product = 1;
// Only change code below this line
for (var i=0;i<arr.length;i++) {
for (var j=0;j<arr[i].length;j++) {
product *= arr[i][j];
}
}
// Only change code above this line
return product;
}
// Modify values below to test your code
multiplyAll([[1,2],[3,4],[5,6,7]]);
答案 0 :(得分:7)
这是非常基本的逻辑问题。理解这一点的理想方式是@Abhinav在评论中提到的方式。
// Module that multiplies all the number in 2D array and returns the product
function multiplyAll(arr) {
var product = 1;
// Iterates the outer array
for (var i=0;i<arr.length;i++) {
// 1st Iter: [1,2]
// 2nd Itr: [3,4]
// 3rd Itr: [5,6,7]
console.log('i: ' + i, arr[i]);
for (var j=0;j<arr[i].length;j++) {
// Outer loop 1st inner 1st : 1
// Outer loop 1st inner 2nd : 2
// Outer loop 2nd inner 1st : 3
// ...
console.log('j: ' + j, arr[i][j]);
// Save the multiplication result
// Prev multiplication result * current no;
// Outer loop 1st inner 1st : 1 * 1 = 1
// Outer loop 1st inner 2nd : 1 * 2 = 2
// Outer loop 2nd inner 1st : 2 * 3 = 6
// Outer loop 2nd inner 1st : 6 * 4 = 24
// ...
product *= arr[i][j];
}
}
// Only change code above this line
return product;
}
multiplyAll([[1,2],[3,4],[5,6,7]]);
在浏览器控制台中运行此功能。这可能会让你有所了解。