使用预先计算的序列重新排序表

时间:2015-09-04 09:41:47

标签: javascript sorting

我正在尝试订购一个预先计算好的序列表。

所以在下面的例子中,5项将被移动到第一项,然后第三项将是第二项,依此类推。

我似乎无法操纵sort来实现此目的,是否可以使用sort

var seq = [5, 3, 2, 1, 4];

var table  = $('.table');
var rows   = $('tbody > tr', table); 

rows.sort( function(a, b){ 
    return 0;
});

rows.each(function(index, row){
     table.append(row);
});

1 个答案:

答案 0 :(得分:1)

不要使用sort,只需遍历seq数组,收集行:



$("#button").click(function() {
  var seq = [5, 3, 2, 1, 4];

  var table = $('table');
  var rows = $('tbody > tr', table);

  var new_rows = [];
  $.each(seq, function() {
    new_rows.push(rows.eq(this - 1)); // subtract 1 because `eq()` is 0-based
  });
  $.each(new_rows, function() {
    table.append(this);
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>a</td>
  </tr>
  <tr>
    <td>b</td>
  </tr>
  <tr>
    <td>c</td>
  </tr>
  <tr>
    <td>d</td>
  </tr>
  <tr>
    <td>e</td>
  </tr>
</table>
<button id="button">Click to reorder</button>
&#13;
&#13;
&#13;