【发布时间】:2011-05-01 01:43:30
【问题描述】:
我有一个包含整数的 HTML 表格列。使用 JavaScript 或 JQuery 获得最小值的最有效方法是什么?
【问题讨论】:
标签: javascript jquery html html-table
我有一个包含整数的 HTML 表格列。使用 JavaScript 或 JQuery 获得最小值的最有效方法是什么?
【问题讨论】:
标签: javascript jquery html html-table
使用 jQuery,您可以 use the .map() method 和 the .get() method 获得整数数组,then .apply() 数组作为参数 for Math.min 获得最小值。
这假设您想要表格中的第一列。选择器可能需要根据您想要的列进行更改。
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 );
【讨论】:
apply() 将数组传递给 Math.min()... 聪明。
非 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;
}
}
【讨论】:
我会使用纯 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;
}
这假定每个 <td> 只包含一个值,并且没有其他 HTML 标记。
【讨论】:
firstChild。谢谢。