按字母数字排序数组

Gra*_*ams 2 javascript

我有下面这样的数组,我想通过字母数字排序,以更快的方式进行升序或降序。

[
  "NFO:BANKNIFTY1931428900CE",
  "NFO:BANKNIFTY1931429000CE",
  "NFO:BANKNIFTY1931429500CE",
  "NFO:BANKNIFTY1931429400CE",
  "NFO:BANKNIFTY1931429300CE",
  "NFO:BANKNIFTY1931429200CE"
]
Run Code Online (Sandbox Code Playgroud)

我想像下面这样排序,降序还是升序

[
  "NFO:BANKNIFTY1931429500CE",
  "NFO:BANKNIFTY1931429400CE",
  "NFO:BANKNIFTY1931429300CE",
  "NFO:BANKNIFTY1931429200CE",
  "NFO:BANKNIFTY1931429000CE",
  "NFO:BANKNIFTY1931428900CE",
]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下类似的方法,但是它排序不正确,速度也很慢。

function sort() {
    var arr = disorderedArray;
    arr.sort(function(a, b) {
        a = a.split(" ");
        b = b.split(" ");
        var an = parseInt(a[0], 10);
        var bn = parseInt(b[0], 10);
        return an < bn ? 1 : (an > bn ? -1 : (a[1] < b[1] ? -1 : (a[1] > b[1] ? 1 : 0)));
    });
    console.log(arr.reverse());
}
Run Code Online (Sandbox Code Playgroud)

注意:有时可能会混合使用小写字母。

Jod*_*ast 5

只需使用.sort()

var items = [
  "NFO:BANKNIFTY1931428900CE",
  "NFO:BANKNIFTY1931429000CE",
  "NFO:BANKNIFTY1931429500CE",
  "NFO:BANKNIFTY1931429400CE",
  "NFO:BANKNIFTY1931429300CE",
  "NFO:BANKNIFTY1931429200CE"
]
var sorted = items.sort()
console.log(sorted);
Run Code Online (Sandbox Code Playgroud)