JavaScript排序以清除已进行的排序
我正在尝试为一个表创建我自己的排序函数,我不允许在我的大学课程中使用这个插件 现在我在这里添加了一些JavaScript标记,可以很好地对表进行排序:JavaScript排序以清除已进行的排序,javascript,jquery,sorting,Javascript,Jquery,Sorting,我正在尝试为一个表创建我自己的排序函数,我不允许在我的大学课程中使用这个插件 现在我在这里添加了一些JavaScript标记,可以很好地对表进行排序: var newDirection = 1; if ($(this).is('.sorted-asc')) { newDirection = -1; } var rows = $table.find('tbody > tr').get(); $.each(rows, function(index, row) { row.so
var newDirection = 1;
if ($(this).is('.sorted-asc')) {
newDirection = -1;
}
var rows = $table.find('tbody > tr').get();
$.each(rows, function(index, row) {
row.sortKey =
findSortKey($(row).children('td').eq(column));
});
rows.sort(function(a, b) {
if (a.sortKey < b.sortKey) return -newDirection;
if (a.sortKey > b.sortKey) return newDirection;
return 0;
});
现在我想解决的问题是,有没有一种方法可以让这种情况逆转?我不是说.reverse()
,它会颠倒表行的顺序,但实际上会清除排序并将值恢复到原来的状态
我想让默认的表顺序返回
编辑:
这是我的尝试:
在声明rows变量之后,我声明了前一个变量:
var previous = $table.find('tbody > tr').get();
然后尝试以类似于我设置的方式对其重新排序:
$table.siblings('a.reset').click(function () {
$.each(previous, function (index, row) {
$table.children('tbody').append(row);
});
});
这就是示例输入和预期输出将有所帮助的地方。假设我有三项“C”、“Z”、“A”。如果单击以通过alpha对表进行排序,那么表行的顺序将是“A”、“C”、“Z”。这项工作没有任何问题。现在,我如何才能清除排序,使其返回到“C”、“Z”、“A”?一旦对集合进行了排序,就无法将其还原。排序之前,您可能必须存储各行的索引。获得原始序列的唯一方法是在使用对象之前复制该对象。你只是想让它把它们混合起来,而不在乎它最初的组织方式吗@排序之前,MatthewLoop在所有行上循环一次,并将它们的当前索引指定给元素的自定义数据属性。然后,如果要再次恢复原始顺序,只需按该自定义数据属性的值对它们进行排序。
$table.siblings('a.reset').click(function () {
$.each(previous, function (index, row) {
$table.children('tbody').append(row);
});
});