如何使用javascript对长数据html表进行排序?

如何使用javascript对长数据html表进行排序?,javascript,database,sorting,html-table,Javascript,Database,Sorting,Html Table,我对数据库的排序代码编码有问题。由于数据很少,所以没有问题,但目前我必须对大约4000个数据进行排序,而且它大约持续20秒,时间太长了。 根据我的检查,持续时间太长的操作是insertBefore(…,…)函数。 你能帮帮我吗 function sorting(list) { var list_data = []; var list_id = []; for (var i = 0; i < list.length; i++) { list_data[i] = Date.p

我对数据库的排序代码编码有问题。由于数据很少,所以没有问题,但目前我必须对大约4000个数据进行排序,而且它大约持续20秒,时间太长了。 根据我的检查,持续时间太长的操作是insertBefore(…,…)函数。 你能帮帮我吗

function sorting(list) {
  var list_data = [];
  var list_id = [];
  for (var i = 0; i < list.length; i++) {
   list_data[i] = Date.parse(list[i].cells[1].innerHTML);
   list_id[i] = parseInt(list[i].cells[12].innerHTML);
  }

//ordino gli array
for (var i = 0; i < list.length; i++) {
  for (var j = 0; j < list.length-1; j++) {
   if (list_data[j] > list_data[j+1]) {
     tmp = list_data[j];
     list_data[j] = list_data[j+1];
     list_data[j+1] = tmp;

     tmp = list_id[j];
     list_id[j] = list_id[j+1];
     list_id[j+1] = tmp;
    }
  }
 }
    //ordinato lista_id
    var j = 0;

   for (var i = 0; i < list.length; i++) {
    j=i;
    while (list_id[i] != parseInt(list[j].cells[12].innerHTML)) {
     j++;
    }
   var target = list[i];
   var newElement = list[j];

   target.parentNode.insertBefore(newElement, target);
   }
 }
函数排序(列表){
var列表_数据=[];
var列表_id=[];
对于(变量i=0;i列表数据[j+1]){
tmp=列表_数据[j];
列表数据[j]=列表数据[j+1];
列表_数据[j+1]=tmp;
tmp=列表_id[j];
list_id[j]=list_id[j+1];
列表id[j+1]=tmp;
}
}
}
//序号列表a_id
var j=0;
对于(变量i=0;i

我的表有13列0-12。第十三列包含具有数据id的隐藏单元格。我从泡泡运动开始,后来又改成了泡泡运动,因为我认为它可以更好地工作,但它仍然需要20秒才能排序。如何在评论中建议我开始认为按服务器排序更好,但我不知道如何实现,我不认为这是排序。创建了一个带有时间记录的代码段,因此您可以看到5000项长的列表的排序并没有太大问题

尝试设置项目,以便控制数据&只输出结果(代码段就是一个非常简单的例子)

const tbody=document.getElementById('tbody'))
设sortDesc=false
常量行HTML=(行数据)=>{
返回`
${rowData.first}
${rowData.second}
`
}
常数可设置=(数据)=>{
tbody.innerHTML=“”
tbody.innerHTML=data.map(rowData=>{
返回rowHtml(rowData)
}).加入(“”)
}
常量排序数据=(数据,描述)=>{
返回数据。排序((a,b)=>{
如果(描述){
返回b.first-a.first
}否则{
返回a.first-b.first
}
})
}
可渲染=(数据)=>{
console.time('排序数据')
常量d=排序数据(数据,排序数据)
console.timeEnd('排序数据')
sortDesc=!sortDesc
console.time('set table'))
可设置(d)
console.timeEnd('set table'))
}
让数据=[];
(功能(){
console.time('create items'))
for(设i=0;i<5000;i++){
数据推送({
第一,我,,
第二个:`${i}-${i}`,
})
}
console.timeEnd('创建项')
可渲染(数据)
})();
const btnSort=document.getElementById('btnSort')
bSensor.addEventListener('click',函数(){
可渲染(数据)
})
排序

为您的问题提供相关代码,以便人们能够更好地理解您的问题,并提供更准确的解决方案您如何排序?内存中是否有包含数据的列表?你能改为在后端排序吗?我有MySql数据库中的所有数据