1

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

3 に答える 3

1

まず、要素を配列/ベクトルにプッシュする必要があります。その後、sortOn または sort メソッドを使用して配列をソートできます。並べ替えオプションを見つけるには、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
    }
}
于 2012-05-20T12:56:45.217 に答える
0

これをコレクションクラスでラップするか、Amyが提案するようにマップする必要があると思います。これは、XMLCollectionを使用する例ですhttp://www.webdevotion.be/blog/2008/01/22/how-to-sort -an-xmllist-using-e4x /

于 2012-05-20T06:23:59.927 に答える
0

これを試してみてください:

var nodes:Array = [];

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

nodes.sortOn(locationname);

これが XML 配列要素で機能するかどうかはわかりません。そうでない場合は、compareFunction で sort() を使用してみてください。

于 2012-05-20T03:15:51.907 に答える