【问题标题】:As3 Sorting Alphabetically and Numerically SimultaneouslyAs3 同时按字母和数字排序
【发布时间】:2013-04-17 18:24:16
【问题描述】:

所以我有一个排序方法,旨在按字母顺序对值进行排序,这在几乎所有情况下都很好用:

function alphabetical(name1, name2):int { 
        if (name1 < name2){ 
            return -1; 
        } else if (name1 > name2){ 
            return 1; 
        }else { 
            return 0; 
        };
    };

但问题是,当标题中包含数字时。

例如:

['abc 8','abc 1','abc 10']

将排序为

['abc 1','abc 10','abc 8']

但我需要做的是让它按字母顺序排序,但是当它遇到一个数字时,会考虑一个数值,因此排序会返回

['abc 1','abc 8'.'abc 10']

我希望有某种现有的正则表达式或算法可以做到这一点,但恐怕我一点也不知道要搜索什么。我所有的排序搜索都是按字母顺序或数字顺序进行的,而不是两者兼而有之。

非常感谢!

【问题讨论】:

    标签: actionscript-3 sorting


    【解决方案1】:

    我找到了一个转换为 AS3 的 JavaScript 解决方案:Sort mixed alpha/numeric array

    解决方案类似于:

    var reA = /[^a-zA-Z]/g;
    var reN = /[^0-9]/g;
    function sortAlphaNum(a,b) {
        var aA = a.replace(reA, "");
        var bA = b.replace(reA, "");
        if(aA === bA) {
            var aN = parseInt(a.replace(reN, ""), 10);
            var bN = parseInt(b.replace(reN, ""), 10);
            return aN === bN ? 0 : aN > bN ? 1 : -1;
        } else {
            return aA > bA ? 1 : -1;
        }
    }
    
    var arr = ['abc 8','abc 1','abc 10'];
    arr.sort(sortAlphaNum);
    
    trace(arr); // abc 1,abc 8,abc 10
    

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多