javascript - 排序方法不适用于大量元素
问题描述
我有一个由大约 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 个元素的前一个数组,它会显示奇怪的结果。
解决方案
通过下面更改排序逻辑,看看它会完美运行。
var sortedArray = myArray.sort(function (a, b) {
return a > b ? 1 : -1;
});
见演示:JSFiddle
推荐阅读
- c++ - c ++删除文本文件中的整行
- python - Python 'and' 可以返回 None 吗?
- java - 在java中初始化多维数组
- php - 通过 swift mailer 中的数字证书使用 office365 中继连接器进行身份验证
- google-kubernetes-engine - 如何在 GKE 中检查功能门状态
- javascript - this.props.items.map 不是使用 react with redux 来获取 api 的功能
- javascript - 基于表单输入字段值的动态字段生成
- android - Android espresso 测试失败,出现 UnknownServiceException: CLEARTEXT
- r - R:使用 tidyverse 对组进行上下预测
- javascript - 如何修复其他类中的方法