AS3排序对象集合?

时间:2012-05-20 02:23:48

标签: actionscript-3

在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);
    }
}

3 个答案:

答案 0 :(得分:1)

首先你需要将元素推送到数组/向量。 然后,您可以使用sortOn或排序方法对数组进行排序。 检查sortOn / sort方法引用以查找排序选项。

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
    }
}

答案 1 :(得分:0)

尝试这样的事情:

var nodes:Array = [];

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

nodes.sortOn(locationname);

我不确定这是否适用于XML数组元素。如果没有,请尝试using sort() with a compareFunction

答案 2 :(得分:0)

我认为你需要以某种方式将它包装在一个集合类中,或者像Amy建议的那样映射它,这是一个使用XMLCollection的例子http://www.webdevotion.be/blog/2008/01/22/how-to-sort-an-xmllist-using-e4x/