【问题标题】:Find Minimum Value in a Column在列中查找最小值
【发布时间】:2011-05-01 01:43:30
【问题描述】:

我有一个包含整数的 HTML 表格列。使用 JavaScript 或 JQuery 获得最小值的最有效方法是什么?

【问题讨论】:

    标签: javascript jquery html html-table


    【解决方案1】:

    使用 jQuery,您可以 use the .map() methodthe .get() method 获得整数数组,then .apply() 数组作为参数 for Math.min 获得最小值。

    这假设您想要表格中的第一列。选择器可能需要根据您想要的列进行更改。

    示例: http://jsbin.com/iyiqa3/

    var values = $('#myTable tr > td:first-child').map(function() {
        return parseInt( $.text( [this] ) );
    }).get();
    
    var minimum = Math.min.apply( null, values );
    

    没有 jQuery,试试这个:

    示例: http://jsbin.com/iyiqa3/2/

    var values = [];
    
    var trs = document.getElementById('myTable').getElementsByTagName('tr');
    
    for( var i = 0, len = trs.length; i < len; i++ ) {
        values.push( parseInt( trs[ i ].cells[ 0 ].innerHTML ) );
    }
    
    var minimum = Math.min.apply( null, values );
    

    【讨论】:

    • +1 用于使用 apply() 将数组传递给 Math.min()... 聪明。
    【解决方案2】:

    非 jquery 答案(并不能保证它是“最”有效的,但应该不错):

    var min, rowNo = null;
    
    var a = table.getElementsByTagName("TR");
    for (var i=0; i<a.length; i++) {
     var td = a[i].childNodes[columnNo];
     var val = parseInt(td.innerHTML);
     if (rowNo == null || val < min) {
      min = val;
      rowNo = i;
      }
     }
    

    【讨论】:

      【解决方案3】:

      我会使用纯 JavaScript,遍历表格的每一行,查看您感兴趣的列并找到最小值:

      function getColumnMin(tableId, columnIndex) {
        var table = document.getElementById(tableId);
        var rows = table.getElementsByTagName('tr');
      
        var min = Infinity;
        for (var i = 0; i < rows.length; i++) {
          var cols = rows[i].getElementsByTagName('td');
          var value = (cols[columnIndex].firstChild.nodeValue | 0); // force to integer value
          if (value < min)
            min = value;
        }
        return min;
      }
      

      这假定每个 &lt;td&gt; 只包含一个值,并且没有其他 HTML 标记。

      【讨论】:

      • 每个td的nodeValue都是null。
      • @kennebec:哎呀,忘了firstChild。谢谢。
      猜你喜欢
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2010-12-31
      • 2014-10-26
      • 1970-01-01
      • 2017-09-19
      相关资源
      最近更新 更多