求数组每列最大值

实现代码

    var arr=[
            [1,2,5,9],
            [4,6,2,8],
            [2,5,7,4],
            [3,7,8,1],
            [0,4,1,2]
    ];

    //创建一个空数组,用来接收每一列最大数所在的行数
    var hang=[];

    //创建一个数组,用来存放每一列的第一个数值,用来做循环中max的比较,并存储每一列的最大数的数值
    var a_max=[];
    for(var i=0;i<arr[0].length;i++) {
        a_max.push(arr[0][i])
    }
    // console.log(a_max)
    //循环每一列
    for (var i=0;i<arr[0].length;i++) {
        //设置一个开关初始值为true
        var bool=true;
        for (var j=0;j<arr.length;j++) {
            //如果存在最大值的交换则创建一个变量接收发生交换的行数(每次发生交换时,变量的值都会被当前发生交换的行数覆盖)
            if (a_max[i]<arr[j][i]) {
                a_max[i]=arr[j][i];
                var idx=j;
                //如果发生了最大值交换,开关的状态变为false
                bool=false;
            };
        };
        //如果在一列的循环中,没有发生过最大值交换(也就是说,第一个数就是最大值)
        if (bool) {
            //则把第一行放进用来接收最大数所在的行数的数组中
            hang.push(0);
        }else {
            //否则就把用来接收最大值所在行数的变量存入这个数组中
            hang.push(idx);
        };
    };
    // console.log(hang)
    //for循环,用*标记出每一列最大值
    for (var i=0;i<arr[0].length;i++) {
        arr[hang[i]][i]='*'+arr[hang[i]][i];
        // console.log('('+hang[i]+','+i+')')
    }


    //将该数组渲染到html中
     var table=document.createElement('table');
    document.getElementById('box').appendChild(table);
     for (var i=0;i<arr.length;i++) {
        var tr=document.createElement('tr');
        table.appendChild(tr);
        for (var j=0;j<arr[i].length;j++) {
            var td=document.createElement('td');
            td.innerHTML=arr[i][j];
            tr.appendChild(td);
        };
     };

实现效果

实现效果

猜你喜欢

转载自blog.csdn.net/Lucky_Q/article/details/81745704