2016-05-02 34 views
0

Typescriptでarraylistを複数のフィールドでソートするにはどうすればよいですか?Typescriptの複数のフィールドでarraylistをソートする方法

例えば、私は、このオブジェクトを持っている: enter image description here

マイ単一のソート方法が正常に動作します:

private sortFunction(a: RSFolderObject, b: RSFolderObject) { 
    var a_label = a.label.toLowerCase(); 
    var b_label = b.label.toLowerCase(); 

    if (a_label < b_label) { 
     return -1; 
    } else if (a_label > b_label) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 

複数の場合は、私がいることを使用並べ替え:

private sortFunction(a: RSFolderObject, b: RSFolderObject) { 
    var a_label = a.label.toLowerCase(); 
    var b_label = b.label.toLowerCase(); 
    var a_description = a.description[0].toLowerCase().replace("\\", ""); 
    var b_description = b.description[0].toLowerCase().replace("\\", ""); 

    if (a_label < b_label || a_description < b_description) { 
     return -1; 
    } else if (a_label > b_label || a_description > b_description) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 

をしかし、それはありません作業。

+0

をあなたはどのように正確に並べ替えるのですか?あなたは何を並べていますか?あなたがここに示したのは比較関数ですが、それをどうしますか?また、何がうまくいかないかについて少し詳しく説明できますか? –

+0

私はオブジェクト "RSFolderObject"を持っています。上の画像はリンクで見ることができます。それが私が分類するオブジェクトです。 1)var myObject:RSFolderObject [] = []; 2).....既存のオブジェクトをmyObjectにプッシュするより..... 3)myObject.sort(this.sortFunction); localeCompareは、このコードのほとんどを排除する必要があるためhttp://www.w3schools.com/jsref/jsref_localecompare.aspを見てください – WebDev

答えて

0

OK、私はこのようにそれを解決:

private sortFunction(a: RSFolderObject, b: RSFolderObject) { 

    var a_label = a.label.toLowerCase(); 
    var b_label = b.label.toLowerCase(); 
    var a_description = a.description[0].toLowerCase().replace("\\", ""); 
    var b_description = b.description[0].toLowerCase().replace("\\", ""); 

     if (a_label < b_label) { 
       return -1; 
      } 
     else if (a_label > b_label) { 
      return 1; 
     } 
     else { 
      if (a_description < b_description) { 
       return -1; 
      } 
      else if (a_description > b_description) { 
       return 1; 
      } 
      else { 
       return 0; 
      } 
     } 
} 
+0

(str1.localeCompare(STR2)を返します)。また、/ iオプションを指定したstring.matchは、大文字と小文字を区別しないテストの方が適しています。 –

+0

ありがとうございました! – WebDev

関連する問題