[英]Merge JSON Object arrays and sort with Javascript
我有一个包含12个数组的JSON对象。 不同地区的国家。 我正在尝试将此数组合并到选择下拉菜单中。 JSON看起来像这样:
"latinamerica": [
"Argentina",
"Bolivia",
"Brazil",
"Chile",
"Colombia",
"Ecuador",
"Paraguay",
"Peru"
],
"korea": ["South Korea"]
然后我用JSON调用:
$.getJSON('js/countries.json', function(data) {
var items = [];
items[0] = '<option value="0">Country</option>';
$.each(data['latinamerica'], function(key, val) {
items.push('<option value="'+ key +'">'+ val +'</option>');
});
});
对Object中的每个数组执行此操作。 问题是我想合并所有这些数组,按字母顺序对它们进行排序,但仍保持它们所关联的区域。 所以基本上我会有一个所有国家的下拉列表,HTML看起来像:
<option value="latinamerica">Argentina</option>
<option value="europe">Austria</option>
我尝试过连接,但后来丢失了我的数组名称。 建议? TIA。
你基本上需要一个不同的“模型”来生成“视图”:
var countries = [];
for (var region in data) {
for (var i = 0, l = data[region].length; i < l; ++i) {
countries.push({ country: data[region][i], region: region });
}
}
然后你对它进行排序:
countries.sort(function(a, b) {
if (a.country < b.country) return -1;
if (a.country > b.country) return 1;
return 0;
});
然后你用它:
var items = [];
items.push('<option value="0">Country</option>');
for (var i = 0, l = countries.length; i < l; ++i) {
items.push('<option value="'+ countries[i].region +'">'+ countries[i].country +'</option>');
}
(注意:所有这些代码都是未经测试的 )。
items.sort(function(a, b) {
if (a.innerHTML < b.innerHTML) return -1;
else return 1;
});
排序后添加“国家/地区”选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.