2012-05-20 182 views
1

在AS3中,如何按字母順序排列此列表?我不是一個編程專家,只是想清楚這一點我很難過。AS3對一組對象進行排序?

var searchObject:Object = new Object(); 
var mapXML:XML; 
var xmlLoader:URLLoader = new URLLoader(); 
xmlLoader.load(new URLRequest("interactive-map.xml")); 
xmlLoader.addEventListener(Event.COMPLETE, parseXML); 

function parseXML(event:Event):void { 
    mapXML = new XML(event.target.data); 
    for each (var locationElement:XML in mapXML.maplocation) { 
     searchObject.locationname = locationElement.attribute("locationname"); 
     searchObject.category = locationElement.attribute("category"); 
     trace("Location Name: " + searchObject.locationname); 
    } 
} 

回答

1

首先你需要推動元素陣列/向量的例子。然後,您可以使用sortOn或排序方法對數組進行排序。 檢查sortOn /排序方法引用以查找排序選項。

var searchObject:Object = new Object(); 
var searchObjectArray:Array = new Array 
var mapXML:XML; 
var xmlLoader:URLLoader = new URLLoader(); 
xmlLoader.load(new URLRequest("interactive-map.xml")); 
xmlLoader.addEventListener(Event.COMPLETE, parseXML); 

function parseXML(event:Event):void { 
    mapXML = new XML(event.target.data); 
    for each (var locationElement:XML in mapXML.maplocation) { 
     searchObject = new Object(); 
     searchObject.locationname = locationElement.attribute("locationname"); 
     searchObject.category = locationElement.attribute("category"); 
     searchObjectArray.push(searchObject);//pushing elements to array 
    } 
    searchObjectArray.sortOn("locationname")//sorting array 
    for each (var searchObjectElement:Object in searchObjectArray) 
    { 
     trace("Location name: " + searchObjectElement.locationname);//printing sorted array 
    } 
} 
+0

太近了!並感謝您的時間 - 唯一的問題是它重複了XML文件中的最後一個位置元素,而不是遍歷所有的獨特位置名稱?任何線索?此外,由於現在一切都進入數組,我們是否還需要第1行的對象? – lgriffin

+0

註冊第1行,如果你想你可以只推送名稱/類別字符串數組,然後排序。我的代碼中有bug。我添加了searchObject = new Object();在第一個循環現在它應該工作正常。 – Bartosz

+0

這很棒,它完美的作品。再次感謝您的時間!有一個偉大的星期天。非常感謝! – lgriffin

0

試試IKE在此:

var nodes:Array = []; 

for each (var locationElement:XML in mapXML.maplocation) { 
    nodes[nodes.length] = locationElement; 
} 

nodes.sortOn(locationname); 

我不知道這是否會與XML數組元素的工作。如果沒有,請嘗試using sort() with a compareFunction

相關問題