【问题标题】:Sort array alphanumerically [duplicate]按字母数字排序数组[重复]
【发布时间】:2019-03-14 04:14:08
【问题描述】:

我有如下数组,我想以更快的方式通过升序或降序按字母数字对其进行排序。

[
  "NFO:BANKNIFTY1931428900CE",
  "NFO:BANKNIFTY1931429000CE",
  "NFO:BANKNIFTY1931429500CE",
  "NFO:BANKNIFTY1931429400CE",
  "NFO:BANKNIFTY1931429300CE",
  "NFO:BANKNIFTY1931429200CE"
]

我想按如下方式排序,降序或升序

[
  "NFO:BANKNIFTY1931429500CE",
  "NFO:BANKNIFTY1931429400CE",
  "NFO:BANKNIFTY1931429300CE",
  "NFO:BANKNIFTY1931429200CE",
  "NFO:BANKNIFTY1931429000CE",
  "NFO:BANKNIFTY1931428900CE",
]

我尝试了类似下面的方法,但排序不正确而且速度也很慢。

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());
}

注意:有时它可能涉及小写字母的混合。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    只需使用.sort()

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

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2021-07-13
      相关资源
      最近更新 更多