2017-05-13 11 views
0

Guten Abend alle! Kann jemand die obersten 5 Zahlen (die höchste) aus einem Array extrahieren? Ich habe ein XML mit Namen, Nachnamen und Ergebnis und möchte die Top 5 extrahieren, um ein Diagramm zu erstellen.AS2 Extract Top 5 aus Array

num = xmlData.childNodes.length; 
    for (var i = 0; i <= num - 1; i++) 
    { 
     names[i] = this.childNodes[i].childNodes[6].firstChild.nodeValue; 
     surnames[i] = this.childNodes[i].childNodes[5].firstChild.nodeValue; 
     points[i] = this.childNodes[i].childNodes[0].firstChild.nodeValue; 
     pointsint[i] = parseInt(speeds[i]); 
     trace(i + "." + pointsint[i] + " (" + names[i] + " " + surnames[i] + ")"); 
    } 

Vielen Dank für jede Hilfe: Auf diese Weise Was jetzt bin ich alle Infos bekommen!

Antwort

0

Organisieren Sie Daten als generische Objekteinträge und Array.sortOn (...) (http://help.adobe.com/en_US/as2/reference/flashlite/WS5b3ccc516d4fbf351e63e3d118ccf9c47f-7ea5.html). Ich habe es nicht getestet, aber ich denke, die Idee ist klar:

var num = xmlData.childNodes.length; 
var entries = []; 

for (var i = 0; i <= num - 1; i++) 
{ 
    var anEntry = {}; 
    var aNode = xmlData.childNodes[i]; 

    anEntry['name'] = aNode.childNodes[6].firstChild.nodeValue; 
    anEntry['surname'] = aNode.childNodes[5].firstChild.nodeValue; 

    var aSpeed = aNode.childNodes[0].firstChild.nodeValue; 
    anEntry['speed'] = parseInt(aSpeed); 

    entries.push(anEntry); 

    trace(i + "." + anEntry['speed'] + " (" + anEntry['name'] + " " + anEntry['surname'] + ")"); 
} 

entries.sortOn("speed", Array.DESCENDING | Array.NUMERIC); 
// Now first five elements of entries Array is what you want. 
+0

Hallo, ich Ihren Code versucht habe, es gibt mir das Array zurück aber es nicht es bestellen, indem die höchste Punktzahl an der Spitze platzieren. Mache ich etwas falsch? – DiegoG

+0

@DiegoG Da die Sortierung ** nach ** erfolgt, werden die Einträge nachverfolgt. Verfolgen Sie sie nach dem Sortieren erneut. – Organis

Verwandte Themen