javascript - 按 int 排序对象数组,然后按字母顺序排序

标签 javascript arrays sorting

我有一个数组,其中包含一些有关状态特征的各种信息,需要通过几种方式对其进行修改。首先,我需要按区域对其进行排序,如果区域相同,则按名称对其进行排序。所以我使用 parseInt 来获取实际的 int 而不是字符串,但现在我迷路了。我该如何完成这种工作呢?我还需要找到人口最多/人口最少的州并将其存储在变量中。

(function() {
'use strict';

var states = [{
    "name": "Alaska",
    "area": "663,268 sq mi",
    "population": 735132
}, {
    "name": "California",
    "area": "163,696 sq mi",
    "population": 38332521
}, {
    "name": "oregon",
    "area": "98,381 sq mi",
    "population": 3899353
}, {
    "name": "washington",
    "area": "71,300 sq mi",
    "population": 6971406
}];

var moddedStates = {};
for (var i = 0; i < states.length; i++) {
    var area = parseInt(states[i].area);

}
}());

最佳答案

我相信这个片段可以满足您想要的一切。请注意使用 replace 来解释逗号,并使用 parseFloat 而不是 parseInt,以防某些大小包含右侧的数字小数点的。 (在比较美国各州的大小时,这可能不是问题,但仍然是一个好习惯......)

(function() {
    'use strict';
    
    var states = [{
        "name": "Alaska",
        "area": "663,268 sq mi",
        "population": 735132
    }, {
        "name": "California",
        "area": "163,696 sq mi",
        "population": 38332521
    }, {
        "name": "oregon",
        "area": "98,381 sq mi",
        "population": 3899353
    }, {
        "name": "washington",
        "area": "71,300 sq mi",
        "population": 6971406
    }];
    
    var mostPopulated = null;
    var leastPopulated = null;

    states.sort(function (a, b) {
        var aArea = parseFloat(a.area.replace(/,/g, ''));
        var bArea = parseFloat(b.area.replace(/,/g, ''));
        if (aArea < bArea) return -1;
        else if (bArea < aArea) return 1;
        else if (a.name < b.name) return -1;
        else if (b.name < a.name) return 1;
        else return 0;
    });
    
    for (var i = 0, len = states.length; i < len; i++) {
        if (!mostPopulated || states[i].population > mostPopulated.population) {
            mostPopulated = states[i];
        }
        if (!leastPopulated || states[i].population < leastPopulated.population) {
            leastPopulated = states[i];
        }
    }
    
    console.log(states);
    console.log(mostPopulated);
    console.log(leastPopulated);
}());

关于javascript - 按 int 排序对象数组,然后按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541018/

相关文章:

php - 在 PHP 中使用 $files = new DirectoryIterator() 后,如何对项目进行排序?

javascript - 在 Rails 中使用 Javascript

javascript - 将字符串转换为具有多个条目的单个数组

javascript - 导出一个 javascript 对象然后修改该导出文件中的该对象是否也会对导出的实例进行修改?

ios - 如何选择核心数据中的特定列?

javascript - 作为数组附加到数组内

ios - 如何整理NSArray仅获取具有特定字符串的内容

c# - 如何按数字样式对字符串数组进行排序?

在 Iframe 中加载 SVG 的 Javascript 事件

javascript - 调用在 var 中分配的 url