こちらの作業デモをご覧ください:
ファイルのソースはここからダウンロードできます。
これにより、次の方法でデータが並べ替えられます。
A B C D
E F G H
I J K L
私はそれをこのようにソートして表示しようとしています:
A D G
B E H
C F I
cssを変更して、4列ではなく3列で表示するようにしました。しかし、ソートアルゴリズムに従って、それをどのように行うことができるかを提案していただけますか?
こちらの作業デモをご覧ください:
ファイルのソースはここからダウンロードできます。
これにより、次の方法でデータが並べ替えられます。
A B C D
E F G H
I J K L
私はそれをこのようにソートして表示しようとしています:
A D G
B E H
C F I
cssを変更して、4列ではなく3列で表示するようにしました。しかし、ソートアルゴリズムに従って、それをどのように行うことができるかを提案していただけますか?
結果表示のための CSS 中心のアプローチを見ていると思います。ul
私は 3 つそれぞれfloat:left
と固定の高さをli
持っていることをお勧めしdisplay: block
ます。それぞれの高さli
が固定されているので、必要に応じて全体の高さをul
簡単に決定できます。そうすれば、上記で説明したとおりに結果を表示できます。
これは理にかなっていますか?
最初に配列をソートして、以下を取得できます。
`sortedList = [A,B,C,D,E,F,G,H,I,...]`
ここから、ディスプレイのフロー順序でアイテムを格納するリストを計算します。
var colSortedList = [];
var gap = sortedList.length / colnumber;
var i, j;
for (i=0; i<colnumber; i++){
for(j=0; j+i < sortedList.length; j+=gap){
colSortedist.push( sortedList[j+i] );
}
}
(これはテストされていないパッチです。1 つまたは 2 つの調整が必要です)
これで、colSortedList から html アイテムを作成できます
[編集]
私の理解が正しければ、あなたのイニシャルが<ul id="source">
表示されました。新しい html node を構築し、<ul id="destination">
呼び出す必要があります。$('#source').quicksand( $('#destination') );
列ごとにアイテムをソートする「新しいhtmlノードを構築」したい場合:
<li>
注文に従ってアイテムを挿入しますcolSortedList