gpt4 book ai didi

javascript - 按排序数组排序

转载 作者:可可西里 更新时间:2023-11-01 13:36:16 25 4
gpt4 key购买 nike

我有一个包含如下表格的页面(按“名称”列自动排序)

  Name         Open Num   Total Num
-----------------------------------
Doe, John 0 0
Smith, Sarah 4 3
Tyler, Rose 7 8

第二个 tr 看起来像这样:

<tr id="1"><td class="N">Smith, Sarah</td><td class="O">4</td><td class="T">3</td></tr>

其中行 ID 是一个计数器(第一行 = 0,第二行 = 1,第三行 = 2 等),单元格类使用 jQuery ($(".O") 给出 Open Num 列)

我试图让表格根据数字列(Open NumTotal Num)进行排序。所以输出看起来像这样(按 Open NumTotal Num 排序):

  Name         Open Num   Total Num
-----------------------------------
Tyler, Rose 7 8
Smith, Sarah 4 3
Doe, John 0 0

到目前为止,我将数字存储到一个数组 arrQuick 中,并将行号存储在另一个数组 rowCount 中。然后我使用快速排序方法对数据进行排序,同时对第二个数组进行排序,效果很好。所以现在我有了排序后的数据以及我的行应遵循的顺序。

问题

我不知道如何让表格行正确更新。

到目前为止我有这个。

for(var i=0;i<rowCount.length;i++){
var tmpHolder=$("#"+i).html();
$("#"+i).html($("#"+rowCount[rowCount.length-(i+1)]).html());
$("#"+rowCount[rowCount.length-(i+1)]).html(tmpHolder);
}

单步执行时,我可以看到最初更新工作正常。然而,最终到了某个点,行会更新到它们不应该出现的位置,我不确定为什么。

最佳答案

您可以根据表格单元格的值对行进行排序。以下方法接受单元格的类名,并根据该单元格的文本内容对行进行排序。

$.fn.sortTable = function(cls) {
this.find('tr').sort(function(a, b){
return $(a).find('td.'+cls).text() > $(b).find('td.' + cls).text();
}).appendTo(this.find('tbody'));
}

$('table').sortTable('O');

更新了支持升序和降序的方法。

$.fn.sortTable = function (opt) {
var sort = typeof opt.sortType !== 'undefined' ? opt.sortType : 'asc',
cls = opt.cls;
if (!cls) return;

var $tr = this.find('tbody').children().sort(function(a, b){
return $(a).find('.' + cls).text() > $(b).find('.' + cls).text();
});

if (sort === 'des') {
$tr = $tr.toArray().reverse();
}
this.find('tbody').append($tr);
}

$('table').sortTable({
cls: 'N', // className of the cells
sortType: 'des' // order 'asc' || 'des'
});

http://jsfiddle.net/Af7mG/

关于javascript - 按排序数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16406710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com