2016-03-25 34 views
0

Değişkeni JavaScript’te sıralamak için yardıma ihtiyacım var, aşağıda kodum var. Kodda ücretliTypeVariableList sıralamak istiyorum. Ön uçta sadece bir değer alıyorum. Aslında 6 değeri vardır, ancak sırasız listede. Bunu artan bir sırada yapmak istiyorum. durumda surchargeTypeVariableList yılındaJavaScript'te bir listeyi nasıl sıralayabilirim?

_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

Kodunuzu yeniden kodlayın ve sadece değişkeni sıralayan kodun bir kısmını koyun lütfen. Bu arada, ne tür bir değişken var? Array 'Array' durumunda Array prototipinde "sort" ifadesi var –

cevap

2

dizgeyi, işlevini karşılaştırmak olmadan sort() kullanmayı düşünün olduğunu.

Bu şekilde, dizininizi Unicode kod noktası sırasına göre sıralayacaksınız.

Örnek:

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

         return 0; 

        }); 

Değiştir:

surcharge.surchargeTypeVariableList.sort(); 

Notlar sizin örnekten

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

: Soru, yalnızca türünü tahmin edebileceğimiz surchargeTypeVariableList değişkeninin bir örneğini sunmuyor. Lütfen sorunuzu daha fazla ayrıntıyla ve muhtemelen minimum uygulanabilir bir örnekle güncelleyin.

+0

Cevabınız için teşekkürler. – learner

+0

@learner Cevabınız size yardımcı oldu, lütfen yararlı bulduysanız cevabımı kabul etmeyi unutmayın (sol taraftaki V yeşil simgesini tıkla) teşekkürler! :) – GibboK

İlgili konular