2012-05-20 6 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/sort methods, чтобы найти параметры сортировки.

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

Так близко! И спасибо за ваше время. Единственная проблема заключается в том, что он повторяет последний элемент location в XML-файле снова и снова, вместо того, чтобы отслеживать все уникальные имена мест? Любая подсказка? Кроме того, поскольку теперь все идет в массив, нам все еще нужен объект в строке 1? – lgriffin

+0

Reg line 1, если вы хотите, вы можете просто нажимать имена/категории String на массив, а затем сортировать. И в моем коде была ошибка. Я добавил 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.

Смежные вопросы