1

これらを注文する方法はありますか (alal SELECT * FROM this ORDERBY ....) JavaScript で。したがって、新しいリスト要素をオブジェクトからDOMに追加したいだけで、順序を制御したい場合。

var example = [
                {id:1, data: { val1: 'val1', val2: 'val2'}, orderById: 313},
                {id:2, data: { val1: 'val1', val2: 'val2'}, orderById: 312},
              ];

var buildString = '';
for ( var i = 0; i < example.length; i++ ) {
   // wondering if there is another approach so that i could control the order as I build the string
   buildString += "<li class='example-class'>" + example[i].data.val1 + "</li>";
}

$("#some-ul").html('').append(buildString);

このアイデアを達成するためのより良いアプローチがあれば、私は学ぶことに興味があります...

4

2 に答える 2

3

配列にはsortと呼ばれるメソッドがあり、期待どおりに機能します。配列をソートします。デフォルトでは、要素を比較するだけでこれが行われます。ただし、ここでは、通常はソートできないオブジェクトの配列をソートしています。したがって、次のように、アイテムを比較する方法をスクリプトに指示する必要があります。

example.sort(function(a,b) {
    return a.id - b.id;
});

関数は、エンジンが行う必要がある比較ごとに呼び出されます (内部的に使用される並べ替えアルゴリズムによって異なりますが、実際には重要ではありません)。abは現在比較されている要素です。関数は以下を返す必要があります。

  • aより小さいと見なされる場合は負の数b
  • bより大きいと見なされる場合は正の数b
  • 項目が等しいと見なされる場合はゼロ。

この場合、式を に簡略化しましたa.id - b.id。これは、基本的な数学によると次のとおりです。

  • a.idより小さい場合、b.id結果は負になります。
  • a.idより大きい場合、b.id結果は正になります。
  • それらが等しい場合、結果はゼロです

お役に立てれば!

于 2013-10-16T13:02:01.657 に答える
-1

探していることを正確に実行できるライブラリ Sugar を使用します。

http://sugarjs.com/api

[{age:35,name:'ken'},{age:15,name:'bob'}].groupBy(function(n) {
  return n.age; 
});

{"15":[{"age":15,"name":"bob"}],"35":[{"age":35,"name":"ken"}]}

しかし、Niet が指摘するように、基本的な並べ替えだけを行う場合は、ネイティブの配列並べ替えでも問題ありませんが、検索対象がより SQL に似た関数である場合は、Sugarjs が非常に役立ちます。

そうでなければhttp://www.taffydb.com/も良い選択です。

于 2013-10-16T13:03:47.113 に答える