2009-10-21 24 views
10

में एक ऐरेकोलेक्शन को सॉर्ट करना क्या फ्लेक्स में कोई तरीका है जहां हम तारों के आधार पर एक सरणीकरण को सॉर्ट कर सकते हैं।फ्लेक्स

मेरे पास "क्रिटिकल" "हाई" "मध्यम" "लो" जैसे तारों के साथ एक डाटाप्रोवाइडर है जहां मुझे इसे इस तरह से सॉर्ट करने की आवश्यकता है कि मुझे शीर्ष और अगले उच्च, मध्यम पर प्रदर्शित होने की आवश्यकता है और निम्न निम्नानुसार है।

क्या कोई मुझे कोई तर्क बता सकता है।

धन्यवाद, कुमार

उत्तर

23

ArrayCollection एक sortproperty है कि ListCollectionView का एक उपवर्ग है। Sort कक्षा में compareFunctionproperty है जिसका उपयोग आप कस्टम सॉर्ट फ़ंक्शंस को परिभाषित करने के लिए कर सकते हैं।

private function sortFunction(a:Object, b:Object, array:Array = null):int 
{ 
    //assuming that 'level' is the name of the variable in each object 
    //that holds values like "Critical", "High" etc 
    var levels:Array = ["Low", "Medium", "High", "Critical"]; 
    var aLevel:Number = levels.indexOf(a.level); 
    var bLevel:Number = levels.indexOf(b.level); 
    if(aLevel == -1 || bLevel == -1) 
     throw new Error("Invalid value for criticality "); 
    if(aLevel == bLevel) 
     return 0; 
    if(aLevel > bLevel) 
     return 1; 
    return -1; 
} 
var sort:Sort = new Sort(); 
sort.compareFunction = sortFunction; 
arrayCollection.sort = sort; 
arrayCollection.refresh(); 
+0

यह काम करता है अच्छा अमर धन्यवाद – skumarvarma

+1

समारोह लौटना चाहिए पूर्णांक – zinovii

+0

@zdmytriv फिक्स्ड; धन्यवाद :) – Amarghosh