0

我正在为此苦苦挣扎。我已经在这里解决了其他问题,据我所知,我正在做我应该做的事情。似乎它应该很简单,但我仍然挂断了电话。这是我的 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);

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

4

2 回答 2

2

我不擅长 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);
于 2012-07-20T18:24:37.877 回答
0

那么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

于 2012-07-20T18:43:42.633 回答