对由字母数字字符串组成的数组进行排序

时间:2012-01-14 14:00:39

标签: actionscript-3

我有一个数组,其元素有ID值“imm1”,“imm2”,“imm3”......“imm10”

问题是sortOn方法认为“imm10”低于“imm2”,因为它分别考虑1和0。然后我试着写

immarray.sortOn("id", Array.NUMERIC)

但它没有正确应用订单,我不知道为什么......也许是因为我的ID适当有一个字母数字值? 然后,我怎么能正确排序?

我想要这个结果:

imm1
imm2
imm3
...
imm10
imm11
imm12
etc... 

1 个答案:

答案 0 :(得分:2)

您必须创建自定义排序功能。在该函数中,您必须选择字符串中的数值并对其进行排序。简而言之:

immarray.sort(sortNumeric);

private function sortNumeric(a:String, b:String):int {
    return a.match(/\d+/g)[0] - b.match(/\d+/g)[0];
}

一些解释:正则表达式\d+在字符串中查找数字字符。请注意,此示例不是防御性编程,并假设每个字符串都以相同的方式格式化(例如'imm10')。