2016-04-06 7 views
1

私のJavascriptの配列はフィールドのタイトル、modifiedDateおよび配列どのように3つの異なるフィールドでJavaScript配列をソートできますか?

を持っている私はすでにこの種の機能を持っている:

  self.tests.sort(function (a, b) { 
       var diff = a.title.localeCompare(b.title); 
       var aDate = a.modifiedDate || ""; 
       var bDate = b.modifiedDate || ""; 
       return diff == 0 ? bDate.localeCompare(aDate) : diff; 
      }); 

は今、私は

  1. タイトル
  2. でソートするためにそれを拡張する必要がありますmodifiedDate
  3. seq

私はこのたび2フィールドの並べ替えを見たことがあります。どのようにしてseqフィールドのソートにも拡張できますか?

+0

ミニノート:あなたが許容可能な答えを得ることはありません場合は、[lodash](https://lodash.com/docs#sortBy)の_sortBy方法、またはこの[thenBy](HTTPSを見てみましょう://github.com/Teun/thenBy.js)repo。 – jmugz3

+0

あなたの配列はオブジェクトの配列ですか? – jmugz3

答えて

4

論理和OR||と一緒に連鎖させることができます。なぜなら、すべてのequalで次の比較が行われるからです。

とすると、seqは数字です。

self.tests.sort(function (a, b) { 
    var aDate = a.modifiedDate || "", 
     bDate = b.modifiedDate || ""; 
    return a.title.localeCompare(b.title) || bDate.localeCompare(aDate) || a.seq - b.seq; 
}); 
関連する問題