javascript自然排序

javascript自然排序,javascript,arrays,sorting,natural-sort,Javascript,Arrays,Sorting,Natural Sort,我有这个阵列: var columnArray = ['columnNumber1','columnNumber6','coulmnNumber7','columnNumber11','columnNumber12']; 如果我执行columnArray.sort(),它给了我: columnArray: ['columnNumber1','columnNumber11','coulmnNumber12','columnNumber6','columnNumber7'] 如何正确排序?请尝试

我有这个阵列:

var columnArray =
['columnNumber1','columnNumber6','coulmnNumber7','columnNumber11','columnNumber12'];
如果我执行
columnArray.sort(),它给了我:

columnArray:
['columnNumber1','columnNumber11','coulmnNumber12','columnNumber6','columnNumber7']
如何正确排序?

请尝试以下操作:

arr = arr.sort(function(a, b) {
  return +/\d+/.exec(a)[0] - +/\d+/.exec(b)[0];
});
编辑:修复了它现在可以工作的问题,它有几个错误:


有一个npm软件包:。在许多情况下都可以很好地工作。

see
文本和数字的自然排序的可能重复,JavaScript
关于可能的重复,是的,你是对的,我太快了,无法发布,忘记了投射数字并抓取多个数字,这是主要的问题。它应该是
-
,而不是
。请检查的描述。我相信,如果a或B中没有任何数字,即使数字和字母处于不同的位置,它也会崩溃。您在jsbin上的示例对我根本不起作用。我在“d”之前收到了反斜杠的警告。但是,我将代码复制到了JSFIDLE,它工作得很好。此外,虽然您的答案从技术上回答了提问者的问题,但如果数组项不包含数字,则根本不起作用。
columnArray.sort(function(a,b) {
     return parseInt(a.match(/\d+/)[0],10) - parseInt(b.match(/\d+/)[0],10);
});