【问题标题】:AS2 Extract top 5 from arrayAS2 从数组中提取前 5 个
【发布时间】:2017-10-12 19:28:19
【问题描述】:

大家晚上好! 任何人都知道如何从数组中提取前 5 个数字(最高)? 我有一个包含姓名、姓氏和分数的 XML,并且想要提取前 5 个来创建图表。 至于现在,我是通过这种方式获取所有信息的:

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] + ")");
    }

感谢您的帮助!

【问题讨论】:

    标签: arrays flash charts actionscript-2


    【解决方案1】:

    将数据组织为通用对象条目和 Array.sortOn(...) (http://help.adobe.com/en_US/as2/reference/flashlite/WS5b3ccc516d4fbf351e63e3d118ccf9c47f-7ea5.html)。我没有测试它,但我认为这个想法很清楚:

    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.
    

    【讨论】:

    • 嗨,我试过你的代码,它给了我数组但是它并没有通过将最高分放在顶部来排序。我做错了吗?
    • @DiegoG 因为排序发生在跟踪条目之后。排序后再次跟踪它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多