在列中查找最小值

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

使用 jQuery,您可以 use the .map() method 和 the .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。谢谢。

以上是关于在列中查找最小值的主要内容,如果未能解决你的问题,请参考以下文章

查找特定列中的最小值和矩阵中相应的行号

在列中查找值,填充'直到非空白单元格

在列中查找具有重复值的行

SQL - 在列中查找具有特定值组合的行

使用array_agg和struct后如何在列中查找值?

在 Pandas、Python 中查找具有相同第一列的所有行的最小值、最大值、平均值