我有一个数组,其中包含有关状态特征的各种信息,需要以几种方式对其进行修改。首先,我需要按面积排序,如果面积相同,则按名称排序。所以我使用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);
}());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句