简单的二维数组和多维数组

说到二维数组和多维数组前,我想先写一个斐波那列求和的例子.

  1. 需求:求斐波那契数列的前20个数之和,已知斐波那契数列的前两项都是1,从第三项开始,每一项都等于前两项之和 .

用代码实现一下,有详细注释:

<!-- 需求:求斐波那契数列的前20个数,已知斐波那契数列的前两项是1,从第三项开始,每一项都等于前两项之和 -->
    <script>
        const fibonacci=[]
        // 把斐波那契数列的前两项给到了数组的第二和第三个位置,在js中,数组的第一位索引是0,在斐波那契数列中
        //不存在0,所以直接略过.从第二位开始保存斐波那契数列中对应位置的元素
         fibonacci[1]=1
         fibonacci[2]=1
         //需要数列的3-20位置上的数
         for(let i=3;i<20;i++){
             //用循环来处理,把数组中的前两位相加,结果赋值到当前位置的元素
             fibonacci[i]=fibonacci[i-1]+fibonacci[i-2]
         }
         //循环迭代数组的各个元素
         for (let i=0;i< fibonacci.length;i++) {
           console.log(fibonacci[i]);
         }
    </script>

看下执行结果:

  1. 二维数组的简单例子

假如我们要记录数天内每小时的气温,我们可以用数组来保存数据,假如有两天的气温数据:
 let averageTempDay1=[72,75,79,79,81,81]
 let averageTempDay2=[81,79,75,75,73,72]

这个时候我们就可以用矩阵(二维数组),矩阵的行保存每天的数据,列对应每小时的数据.

    let averageTemp=[]
    averageTemp[0]=[72,75,79,79,81,81]
    averageTemp[1]=[81,79,75,75,73,72]

js其实只支持一维数组,并不支持矩阵,但是我们可以用数组套数组,实现矩阵或任一多维数组,代码可以这么写:

    <!-- day1 -->
    averageTemp[0]=[]
                 //行 //列
    averageTemp[0][0]=72
    averageTemp[0][1]=75
    averageTemp[0][2]=79
    averageTemp[0][3]=79
    averageTemp[0][4]=81
    averageTemp[0][5]=81

    <!-- day2 -->
    averageTemp[1]=[]
    averageTemp[1][0]=81
    averageTemp[1][1]=79
    averageTemp[1][2]=75
    averageTemp[1][3]=75
    averageTemp[1][4]=73
    averageTemp[1][5]=72

现在可以迭代二维数组的元素,可以创建一个通用函数,来看一下详细代码:

  function printMatrix(myMatrix) {
            for (let i = 0; i < myMatrix.length; i++) {
                for (let j = 0; j < myMatrix[i].length; j++) {
                    console.log(myMatrix[i][j]);
                }
            }
        }
        printMatrix(averageTemp)
        console.log(printMatrix(averageTemp));
  1. 三维数组的简单例子

也可以用处理二维数组的这种方式处理三维数组,不过开发中还是二维数组比较常见.

假如我们要创建一个3*3*3的矩阵,每一格里包括矩阵的i(行),j(列)及z(深度)之和.

  <!-- 创建一个3*3*3的矩阵,每一格里包括矩阵的i(行),j(列)及z(深度)之和 -->
    <script>
        const matrix3x3x3 = []
        for (let i = 0; i < 3; i++) {
            matrix3x3x3[i] = []//初始化每个数组
            for (let j = 0; j < 3; j++) {
                matrix3x3x3[i][j] = []
                for (let z = 0; z < 3; z++) {
                    matrix3x3x3[i][j][z] = i + j + z
                }
            }
        }
        //输出矩阵的内容
        for (let i = 0; i< matrix3x3x3.length; i++) {
            for (let j = 0; j < matrix3x3x3[i].length; j++) {
                for (let z = 0; z < matrix3x3x3[i][j].length; z++) {
                    console.table(matrix3x3x3[i][j][z]);
                }
            }
        }
    </script>

如果是3*3*3*3的矩阵,代码中就会用四层嵌套的for语句,以此类推.

猜你喜欢

转载自blog.csdn.net/huihui_999/article/details/129629390