我有一个数组,其中包含一些有关状态特征的各种信息,需要通过几种方式对其进行修改。首先,我需要按区域对其进行排序,如果区域相同,则按名称对其进行排序。所以我使用 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/