rco*_*102 5 sorting actionscript-3
所以我有一个排序方法,用于按字母顺序排序值,几乎在所有情况下都很好用:
function alphabetical(name1, name2):int {
if (name1 < name2){
return -1;
} else if (name1 > name2){
return 1;
}else {
return 0;
};
};
Run Code Online (Sandbox Code Playgroud)
但问题是,标题中包含一个数字.
例如:
['abc 8','abc 1','abc 10']
Run Code Online (Sandbox Code Playgroud)
会好起来的
['abc 1','abc 10','abc 8']
Run Code Online (Sandbox Code Playgroud)
但我需要发生的是按字母顺序排序,但当遇到数字时,会考虑数值,因此排序会返回
['abc 1','abc 8'.'abc 10']
Run Code Online (Sandbox Code Playgroud)
我希望有一些现有的正则表达式或算法可以做到这一点,但我担心我没有丝毫的线索来搜索.我对排序的所有搜索都按字母顺序或数字顺序进行,而不是两者都进行.
非常感谢!
我找到了一个可转换为 AS3 的 JavaScript 解决方案:对混合字母/数字数组进行排序。
解决方案看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |