我有一个包含整数的HTML表格列。使用JavaScript或JQuery获取最小值的最有效方法是什么?
答案 0 :(得分:9)
使用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 );
答案 1 :(得分:1)
非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;
}
}
答案 2 :(得分:0)
我会使用纯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标记。