嵌套for循环多维数组。概念上的

时间:2016-03-03 07:17:00

标签: javascript for-loop nested

我一直在研究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]]);

1 个答案:

答案 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]]);

在浏览器控制台中运行此功能。这可能会让你有所了解。