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 に答える