AS3数值排序?

问题描述 投票:4回答:3
var dataArray:Array = [ 5, 6, 3, 8, 10, 11, 32, 2 ];
var dataObjectArray:Array [ { "uid": 5 }, { "uid": 6 .... Similar to above ... } ];

我在AS3中有上面的2个数组。并且我希望按顺序对它们进行排序(1~X)[跳过不存在的那些]。对dataArray / dataObjectArray执行此操作的最佳和最有效的方法是什么。

你可以解决1,或两者=)

flash flex actionscript-3 sorting
3个回答
14
投票

你有没有尝试过:

dataArray.sort(  Array.NUMERIC );
dataObjectArray.sortOn( ["uid"], [Array.NUMERIC]); 

6
投票

令人惊讶的是,as3具有内置功能。

 dataArray.sort(Array.NUMERIC);
 dataObjectArray.sortOn("uid", Array.NUMERIC);

这将优雅地给出所需的效果:升序是默认的。数组文档包含其他详细信息,例如降序/等等...如果提供了字段值,Lol sortOn甚至会对嵌套对象/数组进行排序。


0
投票
dataArray.sort();

将自动识别您是否正在排序数字或字符串并对数组进行排序。但后来我做了一些愚蠢的事。我的数组包含数字作为字符串,然后当它们是字符串时,如果数字位数不同,则排序不能正常工作。所以获胜的解决方案是完整的答案:

dataArray.sort(  Array.NUMERIC );
dataObjectArray.sortOn( ["uid"], [Array.NUMERIC]);

如果你想要一个逆序(降序而不是升序),那么在排序后调用:

dataArray.reverse();

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.