2012-04-16 19 views
1

距離と名前の両方でソートしたいと思います。 tinysort(http://tinysort.sjeiti.com)tinysort jqueryは2つの項目をソートします

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

を使用して

(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> 

ただ単に距離の受注により、1列(例えば、それによって起こったとき、私はダウン罰金の並べ替えを持っている:市場、店、バザール、ショップ)。しかし、両方の距離が等しい場合は、名前で並べ替えたい(例:距離と名前:市場、バザール、店舗、ショップ)。

最初のコンポーネントが等しい場合、どのようにセカンダリコンポーネントで並べ替えることができますか?

答えて

0

安定したソートアルゴリズムが必要です(http://www.algorithmist.com/index.php/Stable_Sort)。まず、セカンダリコンポーネント(名前)、次に主要コンポーネント(距離)をソートします。安定した並べ替えは、同じ距離の要素がまだ名前でソートされていることを保証します。

関連する問題