Javascript jQuery-对数组进行排序,并向具有相同属性的值添加一个类,以及前10个

Javascript jQuery-对数组进行排序,并向具有相同属性的值添加一个类,以及前10个,javascript,jquery,arrays,Javascript,Jquery,Arrays,情景: 我通过使用两点之间的距离来匹配案例 使用lat和long。 一切都在一张桌子上完成。 我得到一个“城市”类的“tds”列表,并制作一个数组。 然后我根据“数据距离”属性对数组进行排序 然后我突出显示前十名,如果两个“数据距离”相同 值,同时高亮显示它们,然后高亮显示,比如说11 10,因为两个具有相同的“数据距离” 这是我目前拥有的屏幕截图和概述: 目前,它当前高亮显示前十个值,如果两个值相同,则高亮显示相同的颜色,但不会高亮显示10后的另一个值。 现行代码 问题: 如何获得它,以便在

情景:

我通过使用两点之间的距离来匹配案例 使用lat和long。 一切都在一张桌子上完成。 我得到一个“城市”类的“tds”列表,并制作一个数组。 然后我根据“数据距离”属性对数组进行排序 然后我突出显示前十名,如果两个“数据距离”相同 值,同时高亮显示它们,然后高亮显示,比如说11 10,因为两个具有相同的“数据距离” 这是我目前拥有的屏幕截图和概述:

目前,它当前高亮显示前十个值,如果两个值相同,则高亮显示相同的颜色,但不会高亮显示10后的另一个值。 现行代码

问题:


如何获得它,以便在两个值相同的情况下,再添加一个额外的值以高亮显示,保持最小高亮显示计数为10

您可以将幻数10馈送到可变变量:

var maxHighlightsLength = 10;
for ( var i = 6; i <= maxHighlightsLength ; i++ ) {
  var B1 = $(c_arr[c_arr.length-i]);      var B2 = $(c_arr[c_arr.length-(i-1)]);
  if(B1.attr('data-distance') == B2.attr('data-distance')){ maxHighlightsLength++; if(i == 6) { B1.addClass('success'); } else { B1.addClass('warning'); } } else {
    B1.addClass('warning');
  }
}
请注意,这样您就得到了一个角落的情况下,一切都突出显示。您可能需要为其添加特殊处理—您可以对两个循环执行相同的操作

JS


那么,你的问题是什么?@blgt添加了额外的信息为什么不使用?
var maxHighlightsLength = 10;
for ( var i = 6; i <= maxHighlightsLength ; i++ ) {
  var B1 = $(c_arr[c_arr.length-i]);      var B2 = $(c_arr[c_arr.length-(i-1)]);
  if(B1.attr('data-distance') == B2.attr('data-distance')){ maxHighlightsLength++; if(i == 6) { B1.addClass('success'); } else { B1.addClass('warning'); } } else {
    B1.addClass('warning');
  }
}
function highlightTopTen() {
    var tds = $( "td.city" );
    tds.sort( function( td1, td2 ) {
        return parseInt( $( td2 ).attr( "data-distance" ) ) - parseInt( $( td1 ).attr( "data-distance" ) );
    } );
    var i = 0;
    var j = 0;
    for( var i = 0; i < tds.length; i++ ) {
        if ( i > 0 && parseInt( $( tds[ i ] ).attr( "data-distance" ) ) != parseInt( $( tds[ i - 1 ] ).attr( "data-distance" ) ) ) { j++; }
        if ( j >= 10 ) {
            break;
        } else {
            $( tds[ i ] ).addClass( "highlited" );
        }
    }
}