我有这个数组:
var columnArray =
['columnNumber1','columnNumber6','coulmnNumber7','columnNumber11','columnNumber12'];
如果我columnArray.sort();
,它会给我:
columnArray:
['columnNumber1','columnNumber11','coulmnNumber12','columnNumber6','columnNumber7']
如何正确排序?
答案 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);
});
答案 2 :(得分:0)
有一个npm包:https://github.com/Bill4Time/javascript-natural-sort。在许多情况下工作得很好。