我正在努力解决这个问题。我在这里已经解决了其他问题,据我所知,我正在做我应该做的事情。好像它应该很简单,但我还是挂了。这是我的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);
同样,这看起来很简单,但我正在敲击键盘上的头部。非常感谢任何帮助。
答案 0 :(得分: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);
答案 1 :(得分:0)
好sortOn用于排序由Objects填充的数组并基于属性字段,但是您使用XML节点填充数组,并且在这些节点上没有直接命名为“score”的属性。
您可以单独使用函数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