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,或两者=)
你有没有尝试过:
dataArray.sort( Array.NUMERIC );
dataObjectArray.sortOn( ["uid"], [Array.NUMERIC]);
令人惊讶的是,as3具有内置功能。
dataArray.sort(Array.NUMERIC);
dataObjectArray.sortOn("uid", Array.NUMERIC);
这将优雅地给出所需的效果:升序是默认的。数组文档包含其他详细信息,例如降序/等等...如果提供了字段值,Lol sortOn甚至会对嵌套对象/数组进行排序。
dataArray.sort();
将自动识别您是否正在排序数字或字符串并对数组进行排序。但后来我做了一些愚蠢的事。我的数组包含数字作为字符串,然后当它们是字符串时,如果数字位数不同,则排序不能正常工作。所以获胜的解决方案是完整的答案:
dataArray.sort( Array.NUMERIC );
dataObjectArray.sortOn( ["uid"], [Array.NUMERIC]);
如果你想要一个逆序(降序而不是升序),那么在排序后调用:
dataArray.reverse();
干杯!