我想按距离和名字排序。
(id) ----name---- ----distance----
1 store 2
2 shop 3
3 market 1
4 bazaar 2
#view
<ul id="xanim">
<% @objects.each do |obj| %>
<li><h3><%= obj.distance %></h3><%= obj.distance %>
<% end %>
</ul>
使用tinysort(http://tinysort.sjeiti.com)
#javascript
var $Ul = $('ul#xanim');
$Ul.css({position:'relative',height:$Ul.height(),display:'block'});
var iLnH;
var $Li = $('ul#xanim>li');
$Li.each(function(i,el){
var iY = $(el).position().top;
$.data(el,'h',iY);
if (i===1) iLnH = iY;
});
$Li.tsort('h3:eq(0)',{order:'asc'}).each(function(i,el){
var $El = $(el);
var iFr = $.data(el,'h');
var iTo = i*iLnH;
$El.css({position:'absolute',top:iFr}).animate({top:iTo},500);
});
当我走到一列时(例如,按照距离命令它:市场,商店,集市,商店),我的排序很好。但是,如果两个距离相等,我也想按名称排序(例如距离,然后是名称:市场,集市,商店,商店)。
如果第一个组件相等,我如何按次要组件排序?
答案 0 :(得分:0)
您需要一个稳定的排序算法(http://www.algorithmist.com/index.php/Stable_Sort)。首先按您的辅助组件(名称)排序,然后按主要组件(距离)排序。稳定排序将确保具有相同距离的元素仍按名称排序。
答案 1 :(得分:0)
在tinysort中尚无法进行多次排序。但它将是:http://code.google.com/p/tinysort/issues/detail?id=23
有一天:/