AS3 数组排序问题

AS3 Array sorting issue

我已经有一段时间没有使用 AS3 了,至少可以说我已经生疏了。

我希望我的数组按大小顺序排序(从小到大)。

这是我的代码

    public function sort_by_value():void
    {
        var tmp_array:Array = new Array();
        var counter:Number = 1;

        for each (var hand_card:Number in TABLE.CARDS_IN_PLAYER_1_HAND)
        {
            tmp_array.push(hand_card);
            trace(hand_card)
            counter++;
        }

        tmp_array.sortOn(Array.DESCENDING);
         trace(tmp_array);
    }

这是输出。

34
40
51
30
8
27
14
52
36
19
50
33
9

14,40,51,30,8,27,34,52,36,19,50,33,9

为什么排序不正确?

这是因为 sortOn 用于按 属性(documentation link)对对象进行排序。

sortOn() Allows you to sort objects that have one or more common properties, specifying the property or properties to use as the sort keys

改用sort

sort() Allows you to sort the Array’s elements in a variety of predefined ways, such as alphabetical or numeric order. You can also specify a custom sorting algorithm.

您还需要使用 Array.NUMERIC 标志。

示例:

tmp_array.sort(Array.DESCENDING | Array.NUMERIC);