首页 > 解决方案 > 排序方法不适用于大量元素

问题描述

我有一个由大约 20 个值组成的数组,如下所示,

var myArray = [
            ["2017-01", "Female", "671950.00"],
            ["2017-01", "Male", "322800.00"],
            ["2017-02", "Male", "323977.00"],
            ["2017-02", "Female", "671375.00"],
            ["2017-03", "Male", "326515.00"],
            ["2017-03", "Female", "683646.00"],
            ["2017-04", "Male", "326642.00"],
            ["2017-04", "Female", "684820.00"],
            ["2017-05", "Female", "687627.00"],
            ["2017-05", "Male", "330966.00"],
            ["2017-06", "Male", "330290.00"],
            ["2017-06", "Female", "686022.00"],
            ["2017-07", "Male", "326663.00"],
            ["2017-07", "Female", "679277.00"],
            ["2017-08", "Female", "684451.00"],
            ["2017-08", "Male", "329804.00"],
            ["2017-09", "Female", "686584.00"],
            ["2017-09", "Male", "330300.00"],
            ["2017-10", "Female", "658154.00"],
            ["2017-10", "Male", "316671.00"]
          ];

我将上述代码与数组的第一个元素分组,数组的第二个元素也相对于组进行排序。为此,我编写了以下代码,但这仅适用于数组中的十个元素,如下所示,

var myArray = [
            ["2017-01", "Female", "671950.00"],
            ["2017-01", "Male", "322800.00"],
            ["2017-02", "Male", "323977.00"],
            ["2017-02", "Female", "671375.00"],
            ["2017-03", "Male", "326515.00"],
            ["2017-03", "Female", "683646.00"],
            ["2017-04", "Male", "326642.00"],
            ["2017-04", "Female", "684820.00"],
            ["2017-05", "Female", "687627.00"],
            ["2017-05", "Male", "330966.00"],

          ];

          myArray  = myArray.sort(function (a, b) {  

             return a[0] == b[0] && a[1] > b[1];

        });

如果我使用具有 20 个元素的前一个数组,它会显示奇怪的结果。

标签: javascriptjquery

解决方案


通过下面更改排序逻辑,看看它会完美运行。

var sortedArray  = myArray.sort(function (a, b) {  
             return a > b ? 1 : -1;
        });

见演示:JSFiddle


推荐阅读