2

我有这个数组:

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

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

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

如何正确排序?

4

3 回答 3

17

试试这样:

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

编辑:修复它现在工作,它有几个错误:http: //jsbin.com/iwejik/1/edit

于 2013-01-30T08:19:24.427 回答
2
columnArray.sort(function(a,b) {
     return parseInt(a.match(/\d+/)[0],10) - parseInt(b.match(/\d+/)[0],10);
});

演示

于 2013-01-30T08:26:39.857 回答
0

为此有一个 npm 包:https : //github.com/Bill4Time/javascript-natural-sort。在许多情况下都可以正常工作。

于 2017-01-08T04:20:04.073 回答