https://toster.ru/q/365239

by Aleksey Nemiro

HTML

<button id="btnMakeTestData">Новые данные</button>
<button id="btnAvg">Средняя цена</button>
<button id="btnAvgAndSort">Средняя цена + сортировка</button>
<div id="content"></div>

JavaScript

function MakeTestData()
{
  //var table = $('<table><thead><tr><th>price</th><th>price</th><th>price</th><th>price</th><th>price</th><th>avrg</th></tr></thead><tbody></tbody></table>');
  
  //var tbody = $('tbody', table);
  var html = '<table><thead><tr><th>price</th><th>price</th><th>price</th><th>price</th><th>price</th><th>avrg</th></tr></thead><tbody>';
  
	for (var i = 0; i < 5000; i++)
  {
  	html += '<tr>';
  	//var row = $('<tr/>');
    
    for (var j = 0; j < 5; j++)
    {
    	//row.append('<td>' + (Math.floor(Math.random() * 10000)) + '</td>');
      html += '<td>' + (Math.floor(Math.random() * 10000)) + '</td>';
    }
    
    //row.append('<td>-</td>');
    html += '<td>-</td>';
    
  	//tbody.append(row);
    html += '</tr>';
  }

	//tbody.html(html);
  html += '</tbody></table>';
  
	$('#content').html(html);
}

// средняя цена
function AvgPrice()
{
  $('tr', 'table>tbody').each(function(index, row) {
    var cells = $('td', row);
    var sum = 0;

    for (var i = 0; i < cells.length; i++)
    {
      if (i == cells.length - 1)
      {
        cells[i].innerHTML = sum / 5;
      }
      else
      {
        sum += parseInt(cells[i].innerHTML, 10);
      }
    }

  });
}

// средняя цена + сортировка
function AvgAndSort()
{
  var data = [];
  
  // получаем данные в массив
  $('tr', 'table>tbody').each(function(index, row) {
    var cells = $('td', row);
    var sum = 0;
    var items = [];

    for (var i = 0; i < cells.length; i++)
    {
      if (i == cells.length - 1)
      {
        cells[i].innerHTML = sum / 5;
        items.push(sum / 5);
      }
      else
      {
        sum += parseInt(cells[i].innerHTML, 10);
        items.push(parseInt(cells[i].innerHTML, 10));
      }
    }

    data.push(items);
  });

  // сортируем
  data.sort(function (a, b) {
    return a[5] - b[5];
  });

  // создаем новую таблицу
	var html =...