javascript自然排序

时间:2013-01-30 08:12:42

标签: javascript arrays sorting natural-sort

我有这个数组:

var columnArray =
['columnNumber1','columnNumber6','coulmnNumber7','columnNumber11','columnNumber12'];

如果我columnArray.sort();,它会给我:

columnArray:
['columnNumber1','columnNumber11','coulmnNumber12','columnNumber6','columnNumber7']

如何正确排序?

3 个答案:

答案 0 :(得分:17)

试试这样:

arr = arr.sort(function(a, b) {
  return +/\d+/.exec(a)[0] - +/\d+/.exec(b)[0];
});

修改:修正了它现在有效,它有几个错误:http://jsbin.com/iwejik/1/edit

答案 1 :(得分:2)

columnArray.sort(function(a,b) {
     return parseInt(a.match(/\d+/)[0],10) - parseInt(b.match(/\d+/)[0],10);
});

demo

答案 2 :(得分:0)

有一个npm包:https://github.com/Bill4Time/javascript-natural-sort。在许多情况下工作得很好。