求陣列每列最大值
阿新 • • 發佈:2019-01-29
#實現程式碼
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);
};
};
#實現效果