实现代码
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);
};
};