Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript排序以清除已进行的排序_Javascript_Jquery_Sorting - Fatal编程技术网

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

我正在尝试为一个表创建我自己的排序函数,我不允许在我的大学课程中使用这个插件

现在我在这里添加了一些JavaScript标记,可以很好地对表进行排序:

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);
    });
});