按降序排序字母数字字符串
Sort Alphanumeric String Descending
我需要按如下方式对字母数字项数组进行排序。来自:
2 xxx
20 axxx
38 xxxx
20 bx
8540 xxxxxx
:
8540 xxxxx
38 xxxx
20 axxx
20 bx
2 xxx
因此,按数字降序排序,然后按字母顺序升序排序。数字与字母字符(表示"xxxx")之间总是用一个空格隔开,但数字的长度是可变的。
我怀疑我需要在sort()函数中使用一些正则表达式,并通过空间拆分数字,然后对其进行排序,但我不知道如何按字母顺序排序。有代码示例吗?非常感谢!
不需要RegEx,因为Array.sort()
接受定制函数:
var arr=["2 xxx","20 axxx","38 xxxx","20 bx","8540 xxxxxx"];
arr.sort(function(a,b){
a=a.split(" ");
b=b.split(" ");
var an=parseInt(a[0],10);
var bn=parseInt(b[0],10);
return an<bn?1:(an>bn?-1:(a[1]<b[1]?-1:(a[1]>b[1]?1:0)));
});
console.log(arr);
可以这样做:
var arr = [
"2 xxx",
"20 axxx",
"38 xxxx",
"20 bx",
"8540 xxxxxx"
];
arr.sort(function(a, b) {
var aParts = a.split(" "),
bParts = b.split(" "),
aNum = +aParts[0], // convert numeric parts
bNum = +bParts[0]; // to actual numbers
if (aNum > bNum)
return -1;
else if (aNum < bNum)
return 1;
else
return aParts[1].localeCompare(bParts[1]);
});
演示:http://jsfiddle.net/KLa2J/
相关文章:
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 带静态字符e输入的文本框数字和带javascript的负整数
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 删除图形和数字之间的连字符(-)符号
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- PHP 中的 ASCII 数字到字符错误
- 如何防止数字使用数字1“E”数字2
- javascript中不带数字和字符的字符串的正则表达式
- 如何从包含数字和字符的字符串中获取数值
- Regex Javascript(必须有一个数字和字符)
- 用正则表达式获取3后的数字和字符
- 获取匹配字符串后的数字和字符
- Javascript验证字符串是一个后跟数字的字符
- 什么是html模式,允许数字,字符和点在输入字段
- 在文本区域输入数字或字符时,如何减少计数
- 字符串的最小值包含数字、字符和空格
- 我需要让用户输入任何数字和字符,并且只输入'-'或者''在田地里.我该如何用正则表达式做
- 在页面刷新时以正确的数字启动字符计数器
- 输入文本将值转换为整数/数字/数字进行比较