2016-03-25 9 views
0

私はJavaScriptで変数をソートするのに助けが必要です。以下は私のコードです。コードでsurchargeTypeVariableListを並べ替える必要があります。私はフロントエンドでただ一つの価値しか得ていません。実際には6つの値がありますが、順序付けられていないリストにあります。私は昇順にしたい。場合surchargeTypeVariableListJavaScriptでリストをソートする方法は?

_createSurcharges : function() { 
      var label, amount, sortedArray = [], displayPremiumHeader = false; 
      if (this.surchargeList && this.surchargeList.length > 0) { 
       array.forEach(this.surchargeList, lang.hitch(this, function (surcharge) { 
        debugger; 
        label = this.getContentItemLabelWithJurisdiction(this.policyContentPrefix + surcharge.displayKey, surcharge.displayKeyValue, this.jurisdiction); 

        if (surcharge.surchargeTypeVariableList && surcharge.surchargeTypeVariableList.length > 0) { 
         // Modifies Java based substitutions to work for dojo converts {x} to ${x} 
         label = this._modifyTemplate(label); 
         label = string.substitute(label, surcharge.surchargeTypeVariableList); 
        } 

        surcharge.label = label; 
        surcharge.surchargeTypeVariableList.sort(function (a, b) { 
         if (a.fieldType === label) { 
          return 1; 
         } else if (b.fieldType === label) { 
          return -1; 
         } 

         return 0; 

        }); 

        if (surcharge.premium > 0) { 
         amount = currencies.reformat(surcharge.premium); 
         displayPremiumHeader = true; 
        } 
       })); 


       sortedArray = this.surchargeList.sort(this._sortByDisplayOrder); 

       amount = null; 
       domConstruct.place(string.substitute(this.col1Template, { 
        "label" : label 
       }), this.otherChargesListNode, "last"); 
       if (amount) { 
        domConstruct.place(string.substitute(this.col2Template, { 
         "amount" : amount 
        }), this.otherChargesListNode, "last"); 
       } 

       if (!displayPremiumHeader) { 
        this.set("premiumHeader", ""); 
       } 
      } else { 
       domClass.add(this.domNode, "hide"); 
      } 
     }, 

     /** 
     * sort comparator<br/> 
     * 
     * @private 
     * @instance 
     */ 
     _sortByDisplayOrder : function (displayOrderable1, displayOrderable2) { 
      "use strict"; 
      if (displayOrderable1.displayOrder === displayOrderable2.displayOrder) { 
       return 0; 
      } 
      return (displayOrderable1.displayOrder > displayOrderable2.displayOrder) ? 1 : -1; 
     }, 

     /** 
     * Modifies Java based substitutions to work for dojo<br/> 
     * converts {x} to ${x} 
     * Note, there is a special case handling for formats such as $null <small>per accident</small> 
     * we assume a single substitution in this case. TODO verify this assumption 
     * 
     * @private 
     * @instance 
     */ 
     _modifyTemplate : function (template) { 
      var t = template; 
      if (template.indexOf("$null") !== -1) { 
       t = template.replace("$null", "${0}"); 
      } else { 
       t = t.replace(/(\{[0-9]+\})/g, "$$$1"); 
      } 
      return t; 
     } 
    }); 
}); 
+2

コードをリファクタリングして、変数をソートするコードの部分だけを入れてください。ところで、どのタイプの変数ですか? 'Array'の場合の配列プロトタイプに' sort'メソッドがあります –

答えて

2

文字列の配列であり、比較関数なしsort()の使用を検討してください。

このようにして、Unicodeコードポイント順に基づいて配列をソートします。

例:

var data = ['c', 'd', 'a', 'b']; 
 
data.sort(); 
 
alert(data);

あなたの例から:

surcharge.surchargeTypeVariableList.sort(function (a, b) { 
         if (a.fieldType === label) { 
          return 1; 
         } else if (b.fieldType === label) { 
          return -1; 
         } 

         return 0; 

        }); 

変更するには:

surcharge.surchargeTypeVariableList.sort(); 

注: 質問には、そのタイプについてちょっと推測できる変数surchargeTypeVariableListの例はありません。あなたの質問をもっと詳細で、おそらく最小の実行可能な例で更新してください。

+0

あなたの返事をありがとう。 – learner

+0

@learner私はあなたの助けを嬉しく思っています。あなたが有用な(ちょうど左側のV緑のアイコンをクリックしてください)感謝したなら、私の答えを受け入れることを検討してください! :) – GibboK

関連する問題