Skip to content Skip to sidebar Skip to footer

Find Minimum Value In A Column

I have an HTML table column containing integers. What's the most efficient way to get the minimum value using JavaScript or JQuery?

Solution 1:

Using jQuery, you could use the .map() method with the .get() method to get an Array of integers, then .apply() the Array as the arguments for Math.min to get the minimum.

This assumes that you want the first column in the table. Selector may need to change depending on which column you want.

Example:http://jsbin.com/iyiqa3/

var values = $('#myTable tr > td:first-child').map(function() {
    returnparseInt( $.text( [this] ) );
}).get();

var minimum = Math.min.apply( null, values );

Without jQuery, try this:

Example: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 );

Solution 2:

Non-jquery answer (and no guarantees it is "the most" efficient, but shouldn't be bad):

var min, rowNo = null;

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

Solution 3:

I would go with plain JavaScript, run through each row of the table, look at the column you're interested in and find the minimum:

functiongetColumnMin(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 valueif (value < min)
      min = value;
  }
  return min;
}

This assumes that each <td> contains exactly one value and no other HTML tags.

Post a Comment for "Find Minimum Value In A Column"