javascript – 选择具有最高值/秒和第二高值/ s的表格单元格

前端之家收集整理的这篇文章主要介绍了javascript – 选择具有最高值/秒和第二高值/ s的表格单元格前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有下表,需要找到

>一个或多个td,其中“sum”类具有最高值(数字)
>一个或多个td,类“sum”,第二个最高值(数字)
>将类“text-bold”添加到匹配的tds中

JSFiddle

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.text-bold { font-weight: 700; }
table {
    margin: 16px 0;
    color:#333;
    border-width: 1px;
    border-color: #666;
    border-collapse: collapse;
}
table th {
    border-width: 1px;
    padding: 4px;
    border-style: solid;
    border-color: #666;
    background-color: #FBDD9B;
}
table td {
    border-width: 1px;
    padding: 4px;
    border-style: solid;
    border-color: #666;
    background-color: #fff;
}
</style>
</head>
<body>
    <table id="table-results">
        <tr>
            <th>Question</th>
            <th>inovation</th>
            <th>all-round</th>
            <th>coordination</th>
            <th>keeper</th>
            <th>analytic</th>
        </tr>
        <tr>
            <td>I.</td>
            <td>D=2</td>
            <td>A=1</td>
            <td>E=10</td>
            <td>C=8</td>
            <td>B=4</td>
        </tr>
        <tr>
            <td>II.</td>
            <td>A=6</td>
            <td>C=1</td>
            <td>B=2</td>
            <td>D=5</td>
            <td>E=1</td>
        </tr>
        <tr>
            <td>III.</td>
            <td>E=4</td>
            <td>B=1</td>
            <td>D=3</td>
            <td>A=2</td>
            <td>C=7</td>
        </tr>
        <tr>
            <td>Suma</td>
            <td class="sum">12</td>
            <td class="sum">3</td>
            <td class="sum">15</td>
            <td class="sum">15</td>
            <td class="sum">12</td>
        </tr>
    </table>
</body>
</html>

在上面的示例中,结果应如下所示

Suma 12 3 15 15 12

其他可能的结果

Suma 0 0 0 10 0
Suma 12 3 15 7 9
Suma 1 3 15 15 12
苏马12 3 15 9 12
Suma 4 4 4 4 4

解决方法

它实际上有点复杂,你必须从.sum元素中获取一个数组,然后找到最高数字,然后从数组中删除所有数字,然后找到下一个最高数字,最后定位包含这些数字的所有元素两个数字.

代码中,这看起来像

var sum = $('.sum');
var arr = sum.map(function(_,x) { return +$(x).text() }).get();
var max = Math.max.apply( Math,arr );
var out = arr.filter(function(x) { return x != max });
var nxt = Math.max.apply( Math,out );

sum.filter(function() {
    var numb = +$(this).text();
    return numb == max || numb == nxt;
}).css('font-weight','bold');

FIDDLE

原文链接:https://www.f2er.com/js/155309.html

猜你在找的JavaScript相关文章