我有一个数组,其元素有ID值“imm1”,“imm2”,“imm3”......“imm10”
问题是sortOn方法认为“imm10”低于“imm2”,因为它分别考虑1和0。然后我试着写
immarray.sortOn("id", Array.NUMERIC)
但它没有正确应用订单,我不知道为什么......也许是因为我的ID适当有一个字母数字值? 然后,我怎么能正确排序?
我想要这个结果:
imm1
imm2
imm3
...
imm10
imm11
imm12
etc...
答案 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')。