【问题标题】:Flash AS3 sorton() difficultyFlash AS3 sorton() 难度
【发布时间】:2012-07-20 01:08:20
【问题描述】:

我正在为此苦苦挣扎。我已经在这里解决了其他问题,据我所知,我正在做我应该做的事情。似乎它应该很简单,但我仍然挂断了电话。这是我的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
    <player>
        <score Name="Josh" Company="AB" Email="josh@ab">200</score>
    </player>
    <player>
        <score Name="Shain" Company="AC" Email="shain@AC.com">1800</score>
    </player>
    <player>
        <score Name="Jessica" Company="AD" Email="jessica@AD.com">20000</score>
    </player>

</objects>

这是我的代码。我将 XML“分数”数据放入带有“for each”循环的数组“myArray”中,这很好,但是排序并没有按应有的分数对它们进行排序。

var myArray:Array = new Array();

    for each (var item:XML in scores)
    {
        myArray.push(item);
    }
    trace("pre-sort "+myArray);

    myArray.sortOn("score", Array.NUMERIC | Array.DESCENDING);

    trace("post-sort "+myArray);

再一次,这看起来很简单,但我正在用头敲打它的键盘。非常感谢任何帮助。

【问题讨论】:

    标签: xml arrays actionscript-3 flash sorting


    【解决方案1】:

    我不擅长使用 XML,但这似乎对我有用。我只是将分数改为 score.children()。

    var scores:XML = <objects>
            <player>
              <score Name="Josh" Company="AB" Email="josh@ab">200</score>
            </player>
            <player>
              <score Name="Shain" Company="AC" Email="shain@AC.com">1800</score>
            </player>
            <player>
              <score Name="Jessica" Company="AD" Email="jessica@AD.com">20000</score>
            </player>
            </objects>;
    
    var myArray:Array = new Array();
    
    for each (var item:XML in scores.children())
    {
        myArray.push(item);
    }
    trace("pre-sort "+myArray);
    
    myArray.sortOn("score", Array.NUMERIC | Array.DESCENDING);
    
    trace("post-sort "+myArray);
    

    【讨论】:

    • 就是这样!我错过了“.children()”谢谢巴里斯!
    【解决方案2】:

    sortOn 是用于对由对象填充的数组进行排序并基于属性字段,但是您正在使用 XML 节点填充数组,并且这些节点上没有直接命名为“分数”的属性。

    你可以使用函数 sort 本身来得到你想要的结果。

    var xml:XML=
    <objects>
        <player>
            <score Name="Josh" Company="AB" Email="josh@ab">200</score>
        </player>
        <player>
            <score Name="Shain" Company="AC" Email="shain@AC.com">1800</score>
        </player>
        <player>
            <score Name="Jessica" Company="AD" Email="jessica@AD.com">20000</score>
        </player>
    </objects>;
    
    var myArray=[];
    for each (var score:XML in xml..score) {
     myArray[myArray.length] = score;
    }
    
    myArray.sort(Array.NUMERIC | Array.DESCENDING);
    trace("post-sort "+myArray);
    

    这里有一个关于 wonderfl 的活生生的例子: http://wonderfl.net/c/c6av

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2012-02-06
      • 2010-09-08
      • 2014-05-22
      • 1970-01-01
      相关资源
      最近更新 更多