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