2012-05-20 184 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

相关问题