在Javascript中用字母(后缀)排序数字和数字

时间:2015-05-06 15:13:54

标签: javascript regex sorting

我想对值进行排序

    [101,102,103,101a,101b,104,103a,102a] as [101,101a,101b,102,102a,103,103a,104].

是否可以使用JavaScript默认函数(如果有)或使用Regex。我整天都是这个简单的结构。

有什么建议吗?

先谢谢。

2 个答案:

答案 0 :(得分:1)

array.sort()会为你做的!

jsfiddle demo

答案 1 :(得分:0)

假设这些应该是字符串(你的帖子中缺少引号),那么默认排序(即使用['101', '102', '101b', '101a'].sort())应该有效。

它在lexicographical order(即字典顺序)中对字符串进行排序。

当然,如果你有['10', '20', '100'],它就会失败。您可以选择使用零(即['010', '020', '100'])为事物添加前缀,或者提供自定义比较器。例如,如果它总是一个数字,那么就是一个字母:

['100b', '100a', '10', '20'].sort(function(item1, item2) {
    var firstInt = parseInt(item1, 10);
    var secondInt = parseInt(item2, 10);
    if(firstInt != secondInt) return firstInt - secondInt;
    else return item1.charCodeAt(item1.length - 1) - item2.charCodeAt(item2.length - 1);
});

这假设只有一个尾随字符。它利用了这样一个事实:如果字符串是相同的数字(没有字符),那么else语句将平凡地返回0.它不适用于空字符串。