jQuery/JavaScript在表列中查找最高值

jQuery/JavaScript在表列中查找最高值,javascript,html-table,Javascript,Html Table,这是我的桌子 <table id="aktivita"> <tr> <td>Jack</td> <td>450</td> <td>794</td> <td>784</td> </tr> <tr> <td>Steve</td> <td>145</td>

这是我的桌子

<table id="aktivita">
  <tr>
    <td>Jack</td>
    <td>450</td>
    <td>794</td>
    <td>784</td>
  </tr>
  <tr>
    <td>Steve</td>
    <td>145</td>
    <td>794</td>
    <td>789</td>
  </tr>
  <tr>
    <td>Mike</td>
    <td>2794</td>
    <td>2794</td>
    <td>79</td>
  </tr>
</table>

这就是我所拥有的。我不太喜欢我使用的变量基本上都是相同的代码。有没有办法让它变干?

你可以在
td
s上循环,找到最小值和最大值,并进行相应的处理

$(函数(){
var cols=[]
var trs=$(“#aktivita tr”)
var数据=$。每个(trs,函数(索引,tr){
$.each($(tr).find(“td”).not(“:first”),函数(索引,td){
cols[index]=cols[index]| |[];
cols[index].push($(td).text())
})
});
列forEach(函数(列,索引){
var max=Math.max.apply(null,col);
var min=Math.min.apply(null,col)
$('aktivita tr').find('td:eq(+(index+1)+'))。每个(函数(i,td){
$(td).toggleClass('max',+$(td).text()==max)
$(td).toggleClass('min',+$(td).text()==min)
})
})
})
.max{
颜色:蓝色
}
闵先生{
颜色:红色
}

杰克
450
794
784
史蒂夫
145
794
789
迈克
2794
2794
79

您可以在
td
s上循环,找到最小值和最大值,并进行相应的处理

$(函数(){
var cols=[]
var trs=$(“#aktivita tr”)
var数据=$。每个(trs,函数(索引,tr){
$.each($(tr).find(“td”).not(“:first”),函数(索引,td){
cols[index]=cols[index]| |[];
cols[index].push($(td).text())
})
});
列forEach(函数(列,索引){
var max=Math.max.apply(null,col);
var min=Math.min.apply(null,col)
$('aktivita tr').find('td:eq(+(index+1)+'))。每个(函数(i,td){
$(td).toggleClass('max',+$(td).text()==max)
$(td).toggleClass('min',+$(td).text()==min)
})
})
})
.max{
颜色:蓝色
}
闵先生{
颜色:红色
}

杰克
450
794
784
史蒂夫
145
794
789
迈克
2794
2794
79
您可以使用
map()
查找每个
tr
的最小值和最大值并添加类

var i=1;
while(i<$('tr:first child td')。长度){
var ar=$('table tr').map(函数(){
返回编号($(this.find('td:nth child(+(i+1)+')).text());
})
var max=Math.max.apply(null,ar);
var min=Math.min.apply(null,ar);
var ar=$('table tr')。find('td')。each(function(){
if(数字($(this).text())==max){
$(this.addClass('max');
}else if(数字($(this).text())==min){
$(this.addClass('min');
}
})
i++;
}
.max{
颜色:红色;
}
闵先生{
颜色:绿色;
}

杰克
450
794
784
史蒂夫
145
794
789
迈克
2794
2794
79
您可以使用
map()
查找每个
tr
的最小值和最大值并添加类

var i=1;
while(i<$('tr:first child td')。长度){
var ar=$('table tr').map(函数(){
返回编号($(this.find('td:nth child(+(i+1)+')).text());
})
var max=Math.max.apply(null,ar);
var min=Math.min.apply(null,ar);
var ar=$('table tr')。find('td')。each(function(){
if(数字($(this).text())==max){
$(this.addClass('max');
}else if(数字($(this).text())==min){
$(this.addClass('min');
}
})
i++;
}
.max{
颜色:红色;
}
闵先生{
颜色:绿色;
}

杰克
450
794
784
史蒂夫
145
794
789
迈克
2794
2794
79

这一款似乎适合我:

var offset = 1;

$('#aktivita tr').each(function () {
    var values = [];

    $(this).children('td').each(function (i,v) {
        if (i < offset) return;
        var value = parseInt($(this).text());
        if(!isNaN(value))
            values.push(value);
    });

    var maxValue = Math.max.apply(null, values);
    var minValue = Math.min.apply(null, values);

    $(this).children('td').each(function () {
        if ($(this).text() == maxValue.toString()) {
            $(this).addClass('max');
        }

        if ($(this).text() == minValue.toString()) {
            $(this).addClass('min');
        }
    });

});
var offset=1;
$('#aktivita tr')。每个(函数(){
var值=[];
$(this).children('td')。每个(函数(i,v){
如果(i

其中offset是实际值开始之前的列数(以防万一您只提供简化数据)。

这一项似乎适用于我:

var offset = 1;

$('#aktivita tr').each(function () {
    var values = [];

    $(this).children('td').each(function (i,v) {
        if (i < offset) return;
        var value = parseInt($(this).text());
        if(!isNaN(value))
            values.push(value);
    });

    var maxValue = Math.max.apply(null, values);
    var minValue = Math.min.apply(null, values);

    $(this).children('td').each(function () {
        if ($(this).text() == maxValue.toString()) {
            $(this).addClass('max');
        }

        if ($(this).text() == minValue.toString()) {
            $(this).addClass('min');
        }
    });

});
var offset=1;
$('#aktivita tr')。每个(函数(){
var值=[];
$(this).children('td')。每个(函数(i,v){
如果(i

其中offset是实际值开始之前的列数(以防您只提供简化数据)。

但这会突出显示整个列的最高/最低值。我想获取列号,查找最高/最低值,并为此添加类。@Ostrov我更新了答案,现在它为每列查找最小值和最大值。但这突出显示了整个列的最高/最低值。我想获取列号,查找最高/最低值,并为此添加类。@奥斯特罗夫我更新了答案,现在它为每列查找最小值和最大值。谢谢,但这是针对行的,不是针对列的。@奥斯特罗夫我想我不明白这个问题。您希望突出显示具有最大值和最小值的单元格。是吗?对不起:)是的,我希望如此。但是对于每一列,请看屏幕截图。红线表示最小类,绿色表示最大类。谢谢,但这是行,而不是列。@Ostrov我想我不明白这个问题。您希望突出显示具有最大值和最小值的单元格。是吗?对不起:)是的,我是